STL组件之容器
来源:互联网 发布:中国经济走势 知乎 编辑:程序博客网 时间:2024/05/31 06:23
- 容器:管理某类对象的集合
- 迭代器:在一个对象集群的元素进行遍历,为所有的容器提供一组很小的公共接口,与指针类似,以operator++累进,以operator*提所指值
- 算法:处理集群内的元素
STL的一个根本特性:所有组件都可以针对任意types运作。
序列式容器
可序群集,有vector, deque, list- vector:将元素置于dynamic array中管理,允许随机存取
- deques(double-ended-queue):一个dynamic array,可以向两端发展,不论在尾部还是头部安插元素都很迅速,在中间部分,要移动元素。
int main(){deque<float> coll;for(int i=1;i<=6;i++){ coll.push_front(i*1.1);}for(int i=0;i<coll.size();i++)cout<<coll[i]<<' ';cout<<endl;}
- list:双向链表,list的每个元素都以一部分内存指示其前驱元素和后继元素。存取动作花费线性时间,但是安插或删除动作迅速。
#include <iostream>#include <list>using namespace std;int main(){list<char> coll;for(char c='a';c<='z';c++) coll.push_back(c); while(!coll.empty()) { cout<<coll.front()<<' '; coll.pop_front(); } cout<<endl;}
- string: 也可当作STL容器,与vector类似,只是元素是字符
- array: 长度固定的数组,作为初始化行时很有用
#include <array>...using namespace std;array<int,5> ai;//产生一个有5个int的数组array<double,4> ad={1.2,2.1,3.43,4.3};array<double,4> a;a=ad;//valid for array objects of same size;
说明:在C++11中,可将列表初始化用于vector和array对象,在C++98中,不能对vector对象这样做。
关联式容器
关联式容器依据特定的排序规则,自动为其元素排序,缺省情况下,以operator <进行比较。也可以提供自己的比较函数,定义出不同的排序规则。- set: set的内部元素依据其值自动排序,每个元素值只出现一次
- multiset: 和set相同,允许重复元素
- map: 元素是“实值/键值”所组成的一个对组,根据键排序,每一个键只能出现一次
- multimap: 与map相同,允许重复元素
- 容器配接器
- stack: LIFO
- queue: FIFO
- priority queue: 每个元素拥有不同的优先权,排序规则(缺省使用operator <),下一个元素永远是优先级最高的元素。
0 0
- STL组件之容器
- STL组件(components)之容器(container)
- STL六大组件之(容器)
- STL六大组件之容器篇(序列式容器vector)
- STL组件——容器(关联容器)
- STL容器之顺序容器
- STL容器之关联容器
- STL容器之串行容器
- STL容器之关联容器
- STL序列式容器之heap(注heap并不归属于stl组件)
- 【STL】STL容器之vector
- 【STL】STL容器之map
- STL之顺序容器
- STL 之 容器
- STL容器之vector
- STL容器之list
- STL容器之stack
- STL容器之deque
- linux进程调度介绍
- 【H.264/AVC视频编解码技术详解】 十、图像参数集Picture Paramater Set(PPS)解析
- 51nod-【1181 质数中的质数(质数筛法)】
- 文件锁
- Linux学习小记录
- STL组件之容器
- 使用 SSHFS 挂载远程的 Linux 文件系统及目录
- Adapter适配器的自定义
- OpenCV学习日记3
- Android实现类似QQ头像点击打开相册或者拍照,并获取裁剪后的图片
- 用flask开发个人博客(26)—— 利用config.py配置文件动态的创建不同的Flask对象
- C++构造函数之委托构造函数
- 解决Linux下多个进程或线程同时对一个文件进行写操作问题
- 最小树形图(刘朱算法)记录