在映射中使用无符号字符的矢量

Using a vector of unsigned chars in a map

本文关键字:字符 无符号 映射      更新时间:2023-10-16

我需要帮助在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));

错误:

模板参数2无效

我需要为std::map中的2位置分配一个char[]数组。我试过一个阵列,但运气不好。

您缺少一个>字符的

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