问个C++里面用hash table的问题# JobHunting - 待字闺中k*x2012-10-03 07:101 楼java里面貌似直接有hash table,C++的话看到leetcode那边很多是用STL里面的map来代替的。这样的话查找还是O(1)么?我怎么感觉如果map是按照key值来排序的话,这个查找复杂度更像是O(log(n))啊。
C*U2012-10-03 07:103 楼那你就用hash_map啊。那个是hashtable.【在 k***x 的大作中提到】: java里面貌似直接有hash table,C++的话看到leetcode那边很多是用STL里面的map来: 代替的。这样的话查找还是O(1)么?: 我怎么感觉如果map是按照key值来排序的话,这个查找复杂度更像是O(log(n))啊。
H*s2012-10-03 07:106 楼如 iversion 所说就用 unordered_map 这个就是C++ 里的hash_table标准C++中不存在hash_map, 你得自己实现【在 s*********6 的大作中提到】: STL的map是RB tree,查找的确是O(logN): 但是它的删除和插入也是O(logN): 这点hashtable没法做到吧
s*n2012-10-03 07:107 楼刚才google了一下unordered_maphttp://www.cplusplus.com/reference/stl/unordered_map/operator[]里面的这句话是什么语法?for (auto& x: mymap) {【在 H****s 的大作中提到】: 如 iversion 所说就用 unordered_map 这个就是C++ 里的hash_table: 标准C++中不存在hash_map, 你得自己实现
f*n2012-10-03 07:108 楼All these operations are O(1) average-case and O(N) worst-cast for hashtable.【在 s*********6 的大作中提到】: STL的map是RB tree,查找的确是O(logN): 但是它的删除和插入也是O(logN): 这点hashtable没法做到吧
f*n2012-10-03 07:109 楼unordered_map是TR1或C++11才有的。hash_map是不标准,但是很早就在大多数的compiler里面包了【在 H****s 的大作中提到】: 如 iversion 所说就用 unordered_map 这个就是C++ 里的hash_table: 标准C++中不存在hash_map, 你得自己实现
H*s2012-10-03 07:1010 楼这个是C++11的新语法, 是 automatic type deduction【在 s*****n 的大作中提到】: 刚才google了一下unordered_map: http://www.cplusplus.com/reference/stl/unordered_map/operator[]: 里面的这句话是什么语法?: for (auto& x: mymap) {
H*s2012-10-03 07:1011 楼是的, 不过那样code 就是compiler/platform dependent 的啦!【在 f*******n 的大作中提到】: unordered_map是TR1或C++11才有的。: hash_map是不标准,但是很早就在大多数的compiler里面包了
S*I2012-10-03 07:1012 楼C++11的这俩特性主流的C++ compiler现在应该都支持了。【在 H****s 的大作中提到】: 是的, 不过那样code 就是compiler/platform dependent 的啦!