包含图形节点作为关键字的无序地图

时间:2015-11-16 04:48:15

标签: c++ hashmap

我正在努力实现dijsktra的算法来遍历图表,我遇到了一个小障碍。

class Node{

private:
int id = -1;
unordered_map<Node*, int> edges;

};

正如您所看到的,图中的每个节点都包含一个id的int以及一个无序映射,其中包含一个节点*作为键值,边长作为底层数据。我遇到的问题是,我不知道如何最好地散列这些内容。

ID将从文件中读入并按顺序编号。在没有多次碰撞的情况下散列这些id的最佳方法是什么?

编辑:我目前只是以一种返回id mod edges.size()的方式进行哈希,但我不相信这是最好的方式。

1 个答案:

答案 0 :(得分:1)

甚至不打扰% edges.size()。 unordered_map本身已经执行% this -> _Table.size()

请注意,对于稀疏连接的图形(例如&lt; 8 edge / node),简单的std::vector<std::pair<Node*,int>>可能更有效。