我在我的 unordered_multimap 中插入了一些元素,我发现所有值都映射到使用相等范围的键 k。现在我想按插入顺序遍历这些映射值。查看代码以更好地理解。
#include <iostream>
#include <unordered_map>
using namespace std;
int main()
{
unordered_multimap<int,int> m;
m.insert(make_pair(1,2));
m.insert(make_pair(1,3));
m.insert(make_pair(1,4));
auto it = m.equal_range(1);
for(auto it1 = it.first; it1 != it.second; it1++) {
cout<<it1->second<<endl;
}
}
输出:
4
3
2
但我想按照插入键和映射值的顺序进行遍历。所以,我想按照2,3,4的顺序遍历。可能吗?
最佳答案
没有一种直接的方法可以满足您的要求。当元素被插入到有序或无序的多映射中时,它们实际上被放置在内部结构中,并且不知道它们的放置顺序。
你应该有一个辅助,例如一个 std::queue
容器,您可以在其中将迭代器附加到插入的元素。迭代器可以从插入中获得:
auto inserted_pos = m.insert(make_pair(1,4));
请记住,迭代器在插入期间不会失效。如果元素被删除,它们将失效,并且仅针对相关元素。
关于c++ - 遍历无序 multimap ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34357136/