2

嗨,我想知道我是否可以自己设置另一个链接结构,以便在 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;
4

2 回答 2

0

优化散列查找的一种方法是找到一个散列函数,该函数在要使用的键上产生最少的散列冲突。

std::unordered_map如果您愿意,您还可以使用本地迭代器获取存储桶并重新排列存储桶中的元素。

于 2013-06-20T21:14:51.827 回答
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() 将按指定顺序查看此问题的已接受答案

于 2013-06-20T21:27:23.757 回答