首页 > 解决方案 > 仅使用带有键的 unordered_map 来存储指针(忽略值)

问题描述

我正在实现一种算法,该算法检查网格中的节点是否具有特定值。为了存储我已经检查过的节点的信息,我想使用一个 unordered_map,并将指向该节点的指针作为键。然后我可以简单地使用 umap.find(pointer) 来查看节点是否已被检查并跳过它。这样我可以在 O(n) 时间内完成它。

但是我不需要实际存储地图的值。密钥本身就是足够的信息。那么 std::unordered_map 甚至是正确的解决方案吗?如果是这样,我应该为“价值”字段最大化性能吗?我有一个 32 位嵌入式系统,所以我想把 uint32_t 或 uint_fast32_t 放在那里。

tl;博士:

标签: c++11pointersstlunordered-map

解决方案


std::unordered_map存储没有值的键的正确工具吗?

我会std::unordered_set在这些情况下使用 a 。

本机哈希函数是否适用于指针?

是的。它很可能只是从指针到std::size_t.

如果使用 std::unordered_map 来优化性能,我应该将什么作为地图的“价值”?

如果您使用 astd::unordered_set代替,则没有值,只有指针。


推荐阅读