在地图中使用无符号字符向量
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));
}
我需要帮助在 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));
}