map/set与unordered系列的区别
1: map/set遍历时是有序的,unordered_map/unordered_set遍历时是无序的.
以set和unordered_set容器为例:
2: map/set是双向迭代器,底层数据结构为红黑树,unordered系列是单项迭代器.底层数据结构为哈希表/散列表.
map/set与unordered系列的性能对比
基于上面的区别,相比而言,map/set更加强大,那么为什么在C++11中还要提供rdered系列容器呢?
原因是unordered系列在增删查改中的效率比map/set对的效率更高.
以下我们分别测试了分别使用unordered set 与 set 容器的增删查改,并分别记录所耗时间进行比较:
int main()
{
int n = 10000000;
vector<int> v;
v.reserve(n);
srand(time(NULL)); //随机生成n个数字
for (int i = 0; i < n; i++)
{
v.push_back(rand()+i