如果我将嵌套映射作为多重映射的值,如何将值插入内部映射?
If i have a nested map as a value to a multimap how can i insert values into the inner map?
我正在尝试实现一个字典,其中我有一个外部映射(作为多重映射(,键是正在搜索的单词,值是内部映射,它将有几对本身具有不同的值,都可以映射到外部多重映射键。
例如:单词 Distinct有多种含义,具体取决于它是名词、动词、形容词还是代词 ==>名词- 该程序中的关键字 副词 -唯一。写"明显">等。
我正在考虑将单词 Distinct映射为外部多重映射的键,并将词性作为内部映射的键映射到内部映射,并将定义作为内部映射的值。
到目前为止,我将多重映射声明为:
typedef map<string, string> valMap;
multimap<string,valMap> myMultMap;
我尝试使用insert((添加值,如下所示:
myMultMap.insert("Diction", valMap.insert(pair<string,string>("fun", "first Value"));
我只是在学习地图,仍然不确定地图中迭代器的内部工作。任何帮助将不胜感激。
首先,创建内部映射并将其存储到变量中。然后使用insert
将其添加到外部地图中。
因此,首先创建需要插入的变量:
valMap tmp;
tmp.insert(make_pair("fun", "first Value"));
然后将此tmp
插入主地图:
myMultMap.insert(make_pair("Diction", move(tmp)));
>multimap::insert
将迭代器返回到存储的条目。您可以使用此迭代器将项目插入到插入的映射中,而无需创建任何临时变量。使用emplace
将参数直接转发到入口构造函数而不是insert
以避免创建临时函数也是一个好主意:
using t_Map = ::std::map<::std::string, ::std::string>;
using t_Multimap = ::std::multimap<::std::string, t_Map>;
t_Multimap multimap{};
auto const p_entry
{
multimap.emplace
(
::std::piecewise_construct
, ::std::forward_as_tuple("Diction")
, ::std::forward_as_tuple()
)
};
auto & map{p_entry->second};
map.emplace
(
::std::piecewise_construct
, ::std::forward_as_tuple("fun")
, ::std::forward_as_tuple("first Value")
);
相关文章:
- 为什么映射插入和 map.find() 的单次迭代比插入和 map.find() 的两次单独迭代慢得多
- 如何编写用于多映射插入和擦除功能的 API?
- C++,映射插入&&文件流读取导致麻烦
- 多映射插入键类型信息 std::make_pair vs std::p air 构造函数
- 将一个映射插入到同一多重映射的另一个映射中会导致 SEG 错误
- 将元素插入 c++ 映射 - 插入方法的差异
- 使用boost::关联属性映射插入boost::BIMAP..失败
- STL 无序映射 - 插入到向量中
- C++在映射插入期间保证移动
- Visual Studio C++-std::映射插入失败
- C++映射插入
- 标准::映射插入/擦除的并发问题
- 不明确的映射.插入boost
- 无序映射插入复制元素
- 无序映射插入()错误
- 自定义键出现c++映射插入错误
- c++多映射插入两个以上的值
- 使用配对类型的映射插入
- 调试映射插入
- STL映射插入复制构造函数