包含一个图形节点作为关键字的无序映射

Unordered map containing a graph node as the key

本文关键字:关键字 无序 映射 图形 节点 包含一      更新时间:2023-10-16

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

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

正如您所看到的,图中的每个节点都包含一个id的int,以及一个无序映射,其中包含一个节点*作为键值,边长度作为基础数据。我遇到的问题是,我不知道什么是散列这些id的最佳方法。

Id将从文件中读取并按顺序编号。在不发生多次冲突的情况下散列这些id的最佳方法是什么?

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

甚至不用担心% edges.size()。无序映射本身将已经执行% this -> _Table.size()

注意,对于稀疏连接图(比如<8边/节点),简单的std::vector<std::pair<Node*,int>>可能更有效。