STL容器的适用情况
转自 http://hsw625728.blog.163.com/blog/static/3957072820091116114655254/ /*--> */ /*--> */ 一.各种容器的特性 vector 典型的序列容器, C++ 标准严格要求次容器的实现内存必须是连续的,唯一可以和标准 C 兼容的 stl 容器,任意元素的读取、修改具有常数时间复杂度,在序列尾部进行插入、删除是常数时间复杂度,但在序列的头部插入、删除的时间复杂度是 O(n) ,可以 在任何位置插入新元素,有随机访问功能,插入删除操作需要考虑。 deque 序列容器,内存也是连续的,和 vector 相似,区别在于在序列的头部插入和删除操作也是常数时间复杂度 , 可以 在任何位置插入新元素,有随机访问功能。 list 序列容器,内存是不连续的,任意元素的访问、修改时间复杂度是 O(n) ,插入、删除操作是常数时间复杂度 , 可以 在任何位置插入新元素。 set 关联容器,元素不允许有重复,数据被组织成一棵红黑树,查找的速度非常快,时间复杂度是 O(logN) multiset 关联容器,和 set 一样,却别是允许有重复的元素,具备时间复杂度 O(logN) 查找功能。 map 关联容器,按照 { 键,值 } 方式组成集合,按照键组织成一棵红黑树,查找的时间复杂度 O(logN) ,其中键不允许重复。