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

Using a vector of unsigned chars in a map

我需要帮助在 std::map.

中使用 std::vector 中的 unsigned char

这就是我声明 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));

错误:

Template argument 2 is invalid

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

您缺少 > 个字符

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

您可以使用如下统一初始化器:

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

将数据导入地图的许多有趣且多样的方法中的一些:

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));

}