包含一个图形节点作为关键字的无序映射
Unordered map containing a graph node as the key
我正在实现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>>
可能更有效。
相关文章:
- Visual Studio 2015:Extern "C" 和 "export" 关键字
- C++中的"inline"关键字
- 如何确保C++函数在定义之前声明(如override关键字)
- 递归无序映射
- c++找不到具有相同哈希的无序集合元素
- 正在将无序映射设置为无序映射的值
- 智能指针作为无序映射键,并通过引用进行比较
- 谷歌模拟和覆盖关键字
- 结构体 S { int align; } 之间的区别;(struct 关键字后的名称)和 struct { int al
- 如果全局变量默认是外部变量,为什么要添加"extern"关键字?
- 如何使用set实现无序数据结构?
- 如何写向量的无序向量集,即unordered_set<向量<向量<int>>集合?
- 如何禁用 CPU 的无序执行
- 当我从下面的代码中删除关键字 virtual 时,它可以正常工作,否则会出现错误。在这里"virtual"字的意义是什么?
- 为什么"delete"关键字不删除节点?
- 在 c++ 中正确定义"this"关键字?
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- 以std::字符串作为关键字,按字典顺序对一个无序映射进行排序
- 以三个无符号字符为关键字的无序映射
- 包含一个图形节点作为关键字的无序映射