multimap查询-我们存储具有多个值的键的顺序

multimap query - order in which we store keys with multiple values

本文关键字:顺序 查询 我们 存储 multimap      更新时间:2023-10-16

可能重复:
stl的多映射如何插入尊重顺序?

我有一个多重映射如下-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

在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;
}

附言:请注意,std::multimap没有operator []