map和multimap都是基于binary tree的东西,区别是:
map中一个key只能存在一个,multimap中则可以存在多个key相同的value。
unordered_map是我们常说的hash_map,它的key也是唯一的,
所以你应该还会看到一个叫做unordered_multimap的东西。
std::set std::multiset std::map std::multimap
这几个东西都是基于binary tree的,具体地说是红黑树。
boost::unordered_set boost::unordered_multiset boost::unordered_map boost::unordered_multimap
这几个东西都是基于我们常说的 hash_table 的。
map中一个key只能存在一个,multimap中则可以存在多个key相同的value。
unordered_map是我们常说的hash_map,它的key也是唯一的,
所以你应该还会看到一个叫做unordered_multimap的东西。
std::set std::multiset std::map std::multimap
这几个东西都是基于binary tree的,具体地说是红黑树。
boost::unordered_set boost::unordered_multiset boost::unordered_map boost::unordered_multimap
这几个东西都是基于我们常说的 hash_table 的。
map和multimap在插入数据的时候会根据key自动排序,
而unordered_map和unordered_multimap则不会自动根据key排序。
因此在插入的时候map和multimap相对效率要低一些。
STL容器详解
本文详细介绍了STL容器中map、multimap、unordered_map等的区别,包括它们的数据结构基础(如红黑树和哈希表)、排序特性及插入效率等方面。

被折叠的 条评论
为什么被折叠?



