我有
std::list<multimap<std::string,std::string>::iterator> >
现在我有了新元素:
multimap<std::string,std::string>::value_type aNewMmapValue("foo1","test")
我想避免设置临时多重映射,并且只是为了获取迭代器而插入新元素 所以我可以把它推回到:
std::list<multimap<std::string,std::string>::iterator> >
我可以以某种方式避免创建临时多图。 感谢
答案 0 :(得分:2)
您尚未指定存储在list
中的数据类型。无论如何,假设您要添加特定键指向的值,您可以调用list.insert(*mapIter)
。
multimap<std::string,std::string>::value_type aNewMmapValue("foo1","test")
您需要通过map.insert
将其添加到多图。该函数返回一个迭代器。然后,您可以安全地将此迭代器添加到列表中。
std::list<multimap<std::string,std::string>::iterator> yourlist;
// ....
multimap<std::string,std::string>::iterator itr =
yourmultimap.insert(aNewMmapValue);
yourlist.insert(itr);
答案 1 :(得分:2)
在获取迭代器之前,您需要将键值对插入到多图中。
迭代器本身不起作用。如果要存储来自多个不同多图的迭代器,则可能需要在列表中存储多个迭代器。
也许:
一个pair<multimap<std::string,std::string>::iterator, multimap<std::string,std::string>::iterator>
,其中第一个是迭代器,第二个是结束迭代器。
一个pair<multimap<std::string,std::string>::iterator, multimap<std::string,std::string>*>
,其中第一个是迭代器,第二个是指向迭代器所属的多图的指针。
其他一些解决方案。
答案 2 :(得分:1)
类型std::multimap<std::string,std::string>::iterator
是存储在std :: multimap 中的std::pair<const std::string, std::string>
的迭代器。如果元素未存储在多图中,则无法通过多重映射迭代器引用它。
您可能希望存储使用std::list<std::pair<std::string,std::string> >
代替。
答案 3 :(得分:1)
不存储迭代器。使用const迭代器或更好的方法是存储指向地图中元素的指针。