从另一个常量标准::映射初始化一个常量标准::映射的一部分
initialize part of a const std::map from another const std::map
我有一个const std::map<int,>初始化如下:
const std::map< int, std::string > firstMap = {
{ 1, "First" },
{ 2, "Second"}
};
然后我想制作另一个 const std::map,它使用第一个映射作为其初始值的一部分,并且还扩展了原始数据。所以我想它会类似于这个:
const std::map< int, std::string > secondMap = {
{ <firstMap>},
{ 3, "Third"}
};
这样第二个映射就有三对。这可能吗?
编辑:地图也被声明为extern。
不,std::map
没有合适的构造函数。但是,您可以做的是使用 lambda 就地初始化变量。
const auto secondMap = [&firstMap] {
std::map<int, std::string> map(firstMap);
map[3] = "Third";
return map;
}();
虽然@Rakete111的答案对你需要的东西完全有效,但我建议将其提升为一个函数。也许您可以在多个地方使用它。
std::map<int, std:::string> combine(std::map<int, std::string> const& map1,
std::map<int, std::string> const& map2)
{
std::map<int, std:::string> res(map1);
res.insert(map2.begin(), map2.end());
return res;
}
,然后使用
const auto secondMap = combine(firstMap,
std::map<int, std::string>{{3, "Third"}});
相关文章:
- 在子集化后将包含索引号的列表列表映射到标准索引序列
- 定义具有非标准签名的自定义映射比较器
- 如何将整数向量插入到键中,标准::映射的值
- 标准::映射::合并的计算时间复杂度
- 标准::映射转换器模板
- 从另一个常量标准::映射初始化一个常量标准::映射的一部分
- 替换标准::映射值时崩溃
- 标准::键映射和/或 boost::any 类型的值的类型检查
- 如果可能,标准::映射分配是否静态
- 如何在标准::映射中try_emplace POD 结构?
- 如何通过套接字传输标准::多映射数据
- 多类型标准映射
- 五月标准::映射键地址值数
- 处理对存储在私有映射中的值的封装访问的标准方法,而不破坏C++中的抽象
- 模板标准::映射为类成员
- 模板标准::映射::迭代器实例化
- C++ 如何在标准::多映射中插入
- 推进标准映射的迭代器
- 标准::映射 标准::集合包含重复的键
- std::映射标准分配器性能与块分配器