STL--顺序容器的总结
来源:互联网 发布:闰猹抄 知乎 编辑:程序博客网 时间:2024/05/02 10:35
(注:本文转载自http://blog.csdn.net/hackbuteer1/article/details/6791260)
本文主要讨论C++标准库中的顺序容器及相应的容器适配器,这些内容主要涉及顺序容器类型:vector、list、deque,顺序容器适配器类型:stack、queue、priority_queue。
标准库中的容器分为顺序容器和关联容器。顺序容器(sequential container)内的元素按其位置存储和访问,顾名思义,这些内部元素是顺序存放的;顺序容器内的元素排列次序与元素值无关,而是由元素添加到容器里的次序决定。而关联容器的元素按键(key)排序。容器类型
返回下标为n的元素的引用;如果n<0 or n>=size(),则该操作未定义
(注:只适用于vector和deque容器)
(注:只适用于vector和deque容器)
(注:只适用于list和deque容器)
重新设置c的元素:将迭代器b和e标记的范围内所有的元素复制到c中。b和e必须不是指向c中元素的迭代器。
c.assign(n, t) 将容器c重新设置为存储n个值为t的元素。vector (连续的空间存储,可以使用[]操作符)快速的访问随机的元素,快速的在末尾插入元素,但是在序列中间岁间的插入,删除元素要慢,而且如果一开始分配的空间不够的话,有一个重新分配更大空间,然后拷贝的性能开销。
deque (小片的连续,小片间用链表相连,实际上内部有一个map的指针,因为知道类型,所以还是可以使用[],只是速度没有vector快)快速的访问随机的元素,快速的在开始和末尾插入元素,随机的插入,删除元素要慢,空间的重新分配要比vector快,重新分配空间后,原有的元素不需要拷贝。对deque的排序操作,可将deque先复制到vector,排序后在复制回deque。
list (每个元素间用链表相连)访问随机元素不如vector快,随机的插入元素比vector快,对每个元素分配空间,所以不存在空间不够,重新分配的情况。
set:内部元素唯一,用一棵平衡树结构来存储,因此遍历的时候就排序了,查找也比较快的哦。
map :一对一的映射的结合,key不能重复。
stack :适配器,必须结合其他的容器使用,stl中默认的内部容器是deque。先进后出,只有一个出口,不允许遍历。
queue: 是受限制的deque,内部容器一般使用list较简单。先进先出,不允许遍历。
vector<bool> 与bitset<> ,前面的可以动态改变长度。
priority_queue: 插入的元素就有优先级顺序,top出来的就是优先级最高的了
valarray 专门进行数值计算的,增加特殊的数学函数。
(注:该操作只适用于队列) q.back() 返回队尾元素的值,但不删除该元素
(注:该操作只适用于队列) q.top()
返回具有最高优先级的元素值,但不删除该元素
(注:该操作只适用于优先级队列。MSDN也为queue提供了该操作)
对于priority_queue,在基于优先级的适当位置插入新元素
- STL--顺序容器的总结
- STL总结(一)顺序容器的操作
- STL——顺序容器的总结
- STL总结之顺序容器
- 【STL】STL之顺序容器和关联容器总结
- STL容器的总结
- STL——顺序容器使用总结
- 【C++】STL常用容器总结之六:基于deque的顺序容器适配器
- STL之顺序容器和关联容器总结
- 【C++】STL常用容器总结之二:顺序容器
- 【C++】STL容器的总结
- STL 容器的选择总结
- STL容器的小总结
- stl之顺序容器的选用
- 顺序容器的用法总结
- STL容器之顺序容器
- STL 顺序容器,关联容器
- STL容器 — 顺序容器
- 关于招聘和面试
- 快速解决linux上oracle安装乱码问题
- iOS开发-缓存图片到沙盒
- 09_android入门_采用android-async-http开源项目的GET方式或POST方式实现登陆案例
- c语言中static的用法详细示例分析 详细出处参考:http://www.jb51.net/article/40521.htm
- STL--顺序容器的总结
- 网络管理系统的进化
- uboot中的TEXT_BASE
- Android之XML解析
- Cocos2d-x从零开始视频教程
- 创建cocos2d-x lua并使用一个lua脚本
- vim 配置文件,经过修改,比较好用的版本
- linux之cp/scp命令+scp命令详解(转)
- lightoj 1033 区间dp