c++中用什么代替java中的hashtable?
用map还是set,map中判断是否存在时,元素不存在时会自动将元素插入map,而set的话,只包含一个key,如何实现java中hashtable<string,Lin...
用map还是set,map中判断是否存在时,元素不存在时会自动将元素插入map,而set的话,只包含一个key,如何实现java中hashtable<string, LinkedList<string>>一样的功能???
展开
1个回答
展开全部
旧的c++里没有自带的hashtable。boost库或者c++11里有unordered_map是哈希表(相当于Java的HashMap)。
可以用map,也是key-value存储的,不过底层是红黑树(相当于Java的TreeMap)。
map如果你希望判断元素是否存在,建议用这两种方式,就不会插入元素了:
1) m.count(key) > 0 参考http://www.cplusplus.com/reference/map/map/count/
2) m.find(key) != m.end() 参考http://www.cplusplus.com/reference/map/map/find/
可以用map,也是key-value存储的,不过底层是红黑树(相当于Java的TreeMap)。
map如果你希望判断元素是否存在,建议用这两种方式,就不会插入元素了:
1) m.count(key) > 0 参考http://www.cplusplus.com/reference/map/map/count/
2) m.find(key) != m.end() 参考http://www.cplusplus.com/reference/map/map/find/
追问
哦哦哦,好的谢谢了,那unordered_map底层是什么呢?是不是跟hashtable一个原理呢?
追答
是的,unordered_map是就是哈希表,底层是哈希实现的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询