在地图中使用无符号字符向量

时间:2018-07-26 06:25:35

标签: c++ vector maps unsigned-char

我需要在unsigned char内部的std::vector中使用std::map的帮助。

这就是我声明std::map的方式:

std::map<int, std::vector<unsigned char>> DataMap;

当我尝试为std::vector分配std::map时出现问题。

it->first来自另一个std::map,因为此代码位于循环内。

std::vector<unsigned char> charHolder;
for(int i = 0; i < 10; i++)
{
    charHolder.push_back('2');
}

DataMap.insert(std::pair<int, std::vector<unsigned char>(it->first, charHolder));

错误:

  

模板参数2无效

我需要将char[]数组分配给2中的std::map位置。我尝试过一个数组,但是没有运气。

2 个答案:

答案 0 :(得分:1)

您缺少一个DataMap.insert (std::pair<int, std::vector<unsigned char>>(it->first, charHolder)); ^ 字符

DataMap.insert ({it->first, charHolder});

您可以使用统一初始化程序,如下所示:

sap.ui.define([
  ".../formatter",
  "sap/ui/model/json/JSONModel"
], function(formatter) {
  "use strict";

  QUnit.module("someFunction");

  QUnit.test("Should do this and that", function(assert) {
    formatter.getModel = function() {
      return new JSONModel({ "yesno": "<whatever>" });
    };

    var sResult = formatter.someFunction("abc");

    assert.equal(sResult, "xyz");
  }
});

答案 1 :(得分:0)

将数据获取到地图的许多有趣且多样化的方式中的一些:

std::map<int, std::vector<unsigned char>> DataMap;

void add(int i, std::vector<unsigned char> v)
{
    // efficient move versions
    DataMap.emplace(i, std::move(v));

    DataMap[i] = std::move(v);

    DataMap.insert(std::make_pair(i, std::move(v)));

    DataMap.emplace(std::piecewise_construct, 
        std::make_tuple(i), 
        std::forward_as_tuple(std::move(v)));

    // less efficient copy versions
    DataMap.emplace(i, v);

    DataMap[i] = v;

    DataMap.insert(std::make_pair(i, v));

    DataMap.emplace(std::piecewise_construct, 
        std::make_tuple(i), 
        std::make_tuple(v));

}