标准模板库STL-容器
来源:互联网 发布:python语言及其应用 编辑:程序博客网 时间:2024/05/19 18:38
程序设计与算法(三)C++面向对象程序设计
郭炜
STL
- 标准模板库 STL,常用的数据结构和算法的模板的集合
- 泛型程序设计
- 被插入容器中的元素是原对象的一个复制
容器
可容纳各种数据类型的通用数据结构,是类模板
顺序容器
- 顺序容器中元素插入位置与元素的值无关
vector
会提前多分配一些空间以备用- 适用于
vector
的操作都适用于deque
- 在两端增删元素
deque
(双向队列)性能较好 list
链表,不支持随机存取list
不支持 STL 的sort()
,自己有相应的成员函数- 定义类型不确定的迭代器,前面加
typename
typename list<T>::iterator i;
关联容器
- 元素是排序的,元素位置和其值相关
- 便于查找元素
- 通常以平衡二叉树的方式实现
pair
模板Pred
类型的变量定义了“一个比另一个小”的方法,缺省为less<Key>
less
模板的定义自己定义的类需要给出比较大小的方式
friend bool operator < (const A& a1, const A& a2) {return a1.n < a2.n;}
set
即集合,无相同的元素map
存放的元素有且仅有两个成员变量,一个名为first
,另一个名为second
map
根据first
的值对元素排序,first
的值不可重复,根据first
来检索元素map
有[]
这个成员函数,multimap
没有
相关的成员函数
顺序容器和关联容器中都有的
顺序容器的常用成员函数
关联容器的常用成员函数
容器适配器
stack
栈,先进后出;可用vector、list、deque
实现,缺省情况用deque
实现template<class T, class Cont = deque<T> >class stack { ....};
queue
队列(单向),先进先出;可用list、deque
实现,缺省情况用deque
实现priority_queue
优先级队列,最高优先级的元素总是第一个出队;通常采用堆排序template <class T, class Container = vector<T>, class Compare = less<T> >class priority_queue {.... };
都有
empty()
、size()
函数,用于元素个数的判断
迭代器
用于存取容器中的元素,类似于指针
vector<int>::iterator i;for (i = v.begin(); i != v.end(); i++)cout << *i << endl;vector<int>::reverse_iterator r;//反向迭代器for (r = v.rbegin(); r != v.rend(); r++)cout << *r << endl;
不同容器上的迭代器
有的算法如
sort()
需要随机访问迭代器来访问元素,有的容器不支持这些算法
算法
容器上的操作的函数模板
通过迭代器操纵元素
“相等”的概念
find()
举例大多重载的算法有两个版本
阅读全文
1 0
- 标准模板库STL-容器
- STL(标准模板库)理论基础与容器
- 标准模板库(STL)学习指南之List容器
- 标准模板库(STL)学习指南之List容器
- 周海汉:标准模板库stl 容器的线程安全
- 标准模板库(STL)学习指南之List容器
- 标准模板库(STL)学习探究之List容器
- 标准模板库(STL)学习探究之vector容器
- 标准模板库(STL)学习探究之bitset容器
- 标准模板库(STL)学习探究之Maps容器
- 标准模板库(STL)学习探究之Multimap容器
- 标准模板库(STL)学习探究之MultiSet容器
- 标准模板库(STL)学习探究之Priority Queue容器
- 标准模板库(STL)学习探究之Queue容器
- 标准模板库(STL)学习探究之Set容器
- 标准模板库(STL)学习探究之Stack容器
- C++中的标准模板库STL及容器
- 标准模板库(STL)学习笔记之List容器
- oracle数据库导入导出命令
- Java基础——Java IO详解
- OAUTH2支持GET请求
- sierrajuan ArrayList和LinkedList的区别
- Tensor(tf.Tensor)
- 标准模板库STL-容器
- 运维三:如何把项目部署到服务器?
- 《kubernetes-1.8.0》01-环境准备
- 验证52域数据是否被篡改且根据52域算出密码
- 长按Home键唤起Google Now
- Frequent values UVA
- Nginx笔记
- 从零开始搭建ELK+GPE监控预警系统
- transformClassesWithJarMergingForRelease解决办法 解决版本冲突 解决jar包冲突