【发布时间】:2021-12-04 03:41:50
【问题描述】:
我正在实现一种算法,用于检查网格中的节点是否具有特定值。为了存储我已经检查过的节点的信息,我想使用一个 unordered_map 和指向该节点的指针作为键。然后我可以简单地使用 umap.find(pointer) 来查看节点是否已被检查并跳过它。这样我可以在 O(n) 时间内完成。
但是,我不需要实际存储地图的值。密钥本身就是足够的信息。那么 std::unordered_map 甚至是正确的解决方案吗?如果是这样,我应该为“价值”字段最大化性能吗?我有一个 32 位的嵌入式系统,所以我想把 uint32_t 或 uint_fast32_t 放在那里。
tl;博士:
- std::unordered_map 是存储没有值的键的正确工具吗?
- 本机散列函数是否适用于指针?或者您会建议不同的哈希算法吗?
- 如果使用 std::unordered_map 来优化性能,我应该将什么作为地图的“价值”?
【问题讨论】:
标签: c++11 pointers stl unordered-map