【发布时间】:2014-11-30 03:48:27
【问题描述】:
好的,所以任务是这样的,我将得到 (x, y) 点的坐标,其中 (x, y) 的范围从 -10^6 到 10^6(含)。我必须检查一个特定的点,例如(x, y) 元组是否给了我。简而言之,我如何回答是否设置了特定点(2D)的查询。到目前为止,我能想到的最好的方法是维护std::map<std::pair<int,int>, bool>,每当给出一个点时,我将其标记为 1。虽然这必须以对数时间运行并且是回答查询的相当优化的方式,但我想知道是否有更好的方法这样做。
另外,如果有人能说出如果我使用上述数据结构作为哈希,我会很高兴。我的意思是std::map 的复杂度将是 O(log N) in元素的大小与键的结构无关?
【问题讨论】:
-
很久没有回答我的问题了。请不要马上举报这个:(
-
std:map通常使用平衡二叉树而不是哈希表来实现。如果您不关心地图中元素的顺序(您似乎不关心),您可以使用std:unordered_map。 -
我在使用 std::unordered_map 时遇到一堆错误,请在这里帮助我!!
-
我在使用 std::unordered_map 时遇到一堆错误,请在这里帮助我!!您需要比这更具体才能获得任何帮助.
-
好的,我的std::unordered_map的结构是unordered_map
, int> MAP; ,我正在使用 MAP[make_pair(x, y)] = value; ,我在使用 C++11 编译时遇到这些错误,/usr/include/c++/4.8/bits/functional_hash.h:58:12: error: declaration of 'struct std::hash<:pair int> >' 结构哈希;
标签: c++ optimization hash map