【发布时间】:2016-04-07 13:33:24
【问题描述】:
我有一个std::unordered_multimap,我想获取特定键的最后插入元素。我观察到了这种行为:
#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;
int main() {
unordered_multimap<string, string> mmap;
mmap.emplace("a", "first");
mmap.emplace("a", "second");
mmap.emplace("a", "last");
mmap.emplace("b", "1");
mmap.emplace("b", "2");
mmap.emplace("b", "3");
auto last_a = mmap.equal_range("a").first;
auto last_b = mmap.equal_range("b").first;
cout << last_a->second << endl;
cout << last_b->second << endl;
return 0;
}
此代码输出:
last
3
这至少在 GCC 上是我想要的行为。我可以依靠这个吗?标准是否对std::unordered_multimap 存储东西的订单有什么看法?如果没有,最好的选择是什么?
【问题讨论】:
-
你会得到
first 1和libc++。
标签: c++ c++11 gcc language-lawyer multimap