Redian新闻
>
问个C++里面用hash table的问题
avatar
问个C++里面用hash table的问题# JobHunting - 待字闺中
k*x
1
java里面貌似直接有hash table,C++的话看到leetcode那边很多是用STL里面的map来
代替的。这样的话查找还是O(1)么?
我怎么感觉如果map是按照key值来排序的话,这个查找复杂度更像是O(log(n))啊。
avatar
g*y
2
用unordered_map,这个相当于hashtable
avatar
C*U
3
那你就用hash_map啊。那个是hashtable.

【在 k***x 的大作中提到】
: java里面貌似直接有hash table,C++的话看到leetcode那边很多是用STL里面的map来
: 代替的。这样的话查找还是O(1)么?
: 我怎么感觉如果map是按照key值来排序的话,这个查找复杂度更像是O(log(n))啊。

avatar
i*7
4
unordered_map吧。这个好一点,支持键域放任何形式的指针。
avatar
s*6
5
STL的map是RB tree,查找的确是O(logN)
但是它的删除和插入也是O(logN)
这点hashtable没法做到吧
avatar
H*s
6
如 iversion 所说就用 unordered_map 这个就是C++ 里的hash_table
标准C++中不存在hash_map, 你得自己实现

【在 s*********6 的大作中提到】
: STL的map是RB tree,查找的确是O(logN)
: 但是它的删除和插入也是O(logN)
: 这点hashtable没法做到吧

avatar
s*n
7
刚才google了一下unordered_map
http://www.cplusplus.com/reference/stl/unordered_map/operator[]
里面的这句话是什么语法?
for (auto& x: mymap) {

【在 H****s 的大作中提到】
: 如 iversion 所说就用 unordered_map 这个就是C++ 里的hash_table
: 标准C++中不存在hash_map, 你得自己实现

avatar
f*n
8
All these operations are O(1) average-case and O(N) worst-cast for hash
table.

【在 s*********6 的大作中提到】
: STL的map是RB tree,查找的确是O(logN)
: 但是它的删除和插入也是O(logN)
: 这点hashtable没法做到吧

avatar
f*n
9
unordered_map是TR1或C++11才有的。
hash_map是不标准,但是很早就在大多数的compiler里面包了

【在 H****s 的大作中提到】
: 如 iversion 所说就用 unordered_map 这个就是C++ 里的hash_table
: 标准C++中不存在hash_map, 你得自己实现

avatar
H*s
11
是的, 不过那样code 就是compiler/platform dependent 的啦!

【在 f*******n 的大作中提到】
: unordered_map是TR1或C++11才有的。
: hash_map是不标准,但是很早就在大多数的compiler里面包了

avatar
S*I
12
C++11的这俩特性主流的C++ compiler现在应该都支持了。

【在 H****s 的大作中提到】
: 是的, 不过那样code 就是compiler/platform dependent 的啦!
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。