总结:Vector,List,Set都只有键值(key)。
Vector对于随机访问的速度很快,但是对于插入尤其是在头部插入元素速度很慢,在尾部插入速度很快(push_back)。
List封装了链表,List对于随机访问速度慢得多,因为可能要遍历整个链表才能做到,但是对于插入就快的多了,不需要拷贝和移动数据,只需要改变指针的指向就可以了。
Set使用了非常高效的平衡检索二叉树:红黑树。特点1)键值按从小到大排序。2)检索,插入,删除比较快3)集合内没有重复的键值。但是,构造set集合主要目的是为了快速检索,不可直接去修改键值。
Map,Set属于标准关联容器,使用了非常高效的平衡检索二叉树:红黑树,
Map:原型 map<Key, Data, Compare, Alloc> 。特点1)键值按从小到大排序。2)检索,插入,删除比较快3)集合内没有重复的键值。
hash_map:特点1)键值不排序。2)集合内没有重复的键值。
总 体来说,hash_map 查找速度会比map快,而且查找速度基本和数据量大小无关,属于常数级别;而map的查找速度是log(n)级别。hash还有hash函数的耗时。当有100w条记录的时候,map也只需要20次的比较,200w也只需要21次的比较!所以并不一定常数就比log(n) 小!