我有一个多图,如下 -
multimap<string,string> myMultiMap;
myMultiMap[sKey] = s1;
myMultiMap[sKey] = s2;
myMultiMap[sKey] = s3;
我按顺序添加s1,s2,s3。稍后,我可以通过值1,2,3并在此基础上得到它的值。
例如,如果我传递'1',我应该回到s1。
如果我这样做 - iterator = myMultiMap.equal_range(sKey);
获取迭代器列表中第一个元素的值。
这项工作?迭代器是否按照插入顺序存储键的值(如果是多个值)?
请告知。
thx - Anand
答案 0 :(得分:0)
在C ++ 11中,似乎检索顺序与插入顺序相同(参见此处:http://en.cppreference.com/w/cpp/container/multimap)
我在GCC 4.7.1上尝试了以下简短程序,它满足了这个期望:
#include <iostream>
#include <map>
#include <algorithm>
using namespace std;
int main()
{
multimap<string, string> m;
m.insert({"a", "x"});
m.insert({"a", "y"});
m.insert({"a", "z"});
auto r = m.equal_range("a");
for_each(r.first, r.second, [] (decltype(*(r.first))& p) { cout << p.second << endl; });
return 0;
}
P.S。:请注意,std::multimap
没有operator []