【发布时间】:2014-10-26 07:41:02
【问题描述】:
我有一个以键为结构的地图。 struct(key) 包含两个字符串 x 和 y。
两个键的 x 值可以相同,但 y 值肯定不同。
我很好奇使用这两个键寻找最佳价值。
【问题讨论】:
-
用代码解释自己。
-
添加到上面...映射结构(上面提到的)作为键和值另一个结构。我可以在其中获得接近 O(1) 的插入/删除/搜索吗?
-
您可以使用哈希算法来获取地图的唯一键
-
A
std::map被实现为平衡二叉树,永远不会是 O(1),但相对来说很少会出现缓慢的问题。它保持一个排序的顺序 - 这在迭代时很明显 - 所以如果你关心你迭代元素的顺序 - 或者很高兴它主要是y然后是x- 考虑首先比较y如果它更有可能有所不同。如果您不需要订单,std::unordered_map可能是一个选项 - 您可以找到一个hash_combine函数来组合各个字符串的哈希值。大量示例说明如何在 SO 和其他地方完成所有这些操作。 -
进一步提示 - 如果您使用
std::pair<std::string, std::string>作为键而不是您自己的struct,那么std::map将知道如何比较它们(.first是主键,@987654331 @二级)。