unordered_map中确实没有保证订单吗?请问这是因为我想为一个指定的顺序unorderded_map,使得它可以从迭代容器begin()以end()根据指定的顺序(同时保留的散列访问单个元件的效率,在全球范围而言).
你知道,它的名字有一个原因......
要实际给它一个订单,你需要实现自己的哈希,以某种方式给你想要的订单.
现在,为了解决您的实际问题,您可以创建一个std::map来自您的std::unordered_map,甚至以最小的插入开销(无副本):
#include <iostream>
#include <unordered_map>
#include <map>
#include <functional>
int main()
{
std::unordered_map<int, int> m;
m[5] = 1;
m[4] = 2;
m[3] = 3;
m[2] = 4;
m[1] = 5;
typedef std::reference_wrapper<const int> cref_int;
typedef std::reference_wrapper<int> ref_int;
std::map<cref_int, ref_int> ordered(m.begin(), m.end());
for(auto it=ordered.begin(), ite=ordered.end(); it != ite; ++it){
std::cout << it->second << '\n';
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
99 次 |
| 最近记录: |