std::map, std::multimap, std::tr1::unordered_map 区别

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和multimap在插入数据的时候会根据key自动排序,
而unordered_map和unordered_multimap则不会自动根据key排序。

因此在插入的时候map和multimap相对效率要低一些。




你可能感兴趣的:(C/C++)