0

可能重复:
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 - 阿南德

4

1 回答 1

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

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

于 2013-01-06T21:57:14.383 回答