嗨我想知道我是否可以自己设置另一个链接结构来实际在unordered_map中的键之间设置我自己的顺序?还是有一个标准的图书馆?我需要unordered_map的快速查找功能......
例如:
#include<string>
#include<tr1/unordered_map>
struct linker
{
string *pt;
string *child1;
string *child2;
};
unordered_map<string,int> map({{"aaa",1},{"bbb",2},{"ccc",3},{"ddd",4}});
linker node1 = new linker;
node1.pt = &map.find("aaa")->first;
node1.child1 = &map.find("ccc")->first;
node1.child2 = &map.find("ddd")->first;
答案 0 :(得分:0)
优化哈希查找的一种方法是找到一个哈希函数,该函数会在您要使用的键上产生最少数量的哈希冲突。
如果您愿意,可以使用std::unordered_map
get local iterators to buckets并重新排列广告素材中的元素。
答案 1 :(得分:0)
更好的解决方案恕我直言如下:
struct comparator {
bool operator()(string const& lhs, string const& rhs) {
return ...;//Your definition of order here!!!
}
};
std::map<string, int, comparator> map{{"aaa",1},{"bbb",2},{"ccc",3},{"ddd",4}};//note the elided paranthesis
现在你可以简单地使用这个地图的迭代器对begin()/ end(),它将按照指定的顺序看到这个question的接受答案