9顺序容器
为程序员提供控制元素存储和访问顺序的能力。
9.1顺序容器概述
![](https://img.haomeiwen.com/i8542527/26d9f87ebed3650d.png)
![](https://img.haomeiwen.com/i8542527/c4c26dc714cad8eb.png)
![](https://img.haomeiwen.com/i8542527/a6babe604bf35549.png)
9.2容器库概览
头文件和名字一样,模板类,要提供元素类型信息。可以保存另外一种容器。
![](https://img.haomeiwen.com/i8542527/1fc275774e38aeff.png)
![](https://img.haomeiwen.com/i8542527/67bd394bdcd27f23.png)
![](https://img.haomeiwen.com/i8542527/6e2f05a41b53c704.png)
9.2.1迭代器
![](https://img.haomeiwen.com/i8542527/fba9fc17a9a20143.png)
9.2.4容器定义和初始化
![](https://img.haomeiwen.com/i8542527/3f93420f2da5c4de.png)
标准库array
初始化要给类型和大小
![](https://img.haomeiwen.com/i8542527/a54b4da45c30b50b.png)
列表初始化,初始值的数目必须小于或等于array的大小。
Array弥补了数组不能拷贝或赋值操作,它可以赋值和拷贝。
9.2.5赋值和swap
![](https://img.haomeiwen.com/i8542527/a73ca82929893bab.png)
![](https://img.haomeiwen.com/i8542527/992dd775426bceb7.png)
也可以认为只是交换了名字,看源码去验证。
9.2.7关系运算符
两个运算对象必须是相同类型的容器
![](https://img.haomeiwen.com/i8542527/1e30e46926ad6580.png)
最后一条解释:两个不等长的容器,比较第一个不等的元素的大小来确定大小
9.3顺序容器操作
9.3.1添加元素
![](https://img.haomeiwen.com/i8542527/d3e130aded8c527e.png)
![](https://img.haomeiwen.com/i8542527/4478a481c245be47.png)
使用emplace操作
Insert和push实际拷贝传参,而emplace的是将传参传递给构造函数,在容器管理的内存空间中直接构造元素。
9.3.2访问元素
访问成员函数返回的是引用
![](https://img.haomeiwen.com/i8542527/ef0732b10a97ddcf.png)
9.3.3删除元素
![](https://img.haomeiwen.com/i8542527/21aeb5cca4238862.png)
9.3.4特殊的forward_list操作
Forward_list是一个单向列表so
![](https://img.haomeiwen.com/i8542527/4cf4effedbefbe07.png)
9.3.5改变容器的大小
![](https://img.haomeiwen.com/i8542527/33070cd379a58705.png)
9.3.6容器操作可能是迭代器失效
![](https://img.haomeiwen.com/i8542527/5b978fae3b143d6f.png)
不要保存end返回的迭代器,而是不断更新end迭代器
9.4vector对象是如何增长的
![](https://img.haomeiwen.com/i8542527/ce44ad5380e78237.png)
Capacity和size
Size是容器中元素的数量
Capacity是容器的大小
9.5额外的string操作
![](https://img.haomeiwen.com/i8542527/20736c7e1af6b4af.png)
9.5.1构造string的其他方法
![](https://img.haomeiwen.com/i8542527/97fa915a69b74078.png)
9.5.2改变string的其他方法
![](https://img.haomeiwen.com/i8542527/85d54ac1d76e3dc8.png)
![](https://img.haomeiwen.com/i8542527/104a9b09a7c51704.png)
改变string的多种重载函数
![](https://img.haomeiwen.com/i8542527/359bba7896cef5ba.png)
9.5.3string搜索操作
![](https://img.haomeiwen.com/i8542527/c1450e1b9a544372.png)
![](https://img.haomeiwen.com/i8542527/3e0cb321c98d7aa4.png)
9.5.4compare函数
![](https://img.haomeiwen.com/i8542527/64ee23c98685d854.png)
9.5.5数值转换
![](https://img.haomeiwen.com/i8542527/7cb4947a2eabf74f.png)
9.6容器适配器(就是换成相应的栈、队列、优先队列)
![](https://img.haomeiwen.com/i8542527/326aea5b001722b5.png)
定义一个适配器
Deque<int> deq;
Stack<int> std(deq);
可在某种容器上实现适配器
![](https://img.haomeiwen.com/i8542527/a65853c02e6f8290.png)
栈适配器
![](https://img.haomeiwen.com/i8542527/76ab5acef96c033b.png)
队列适配器
![](https://img.haomeiwen.com/i8542527/6394c422c1895aab.png)
![](https://img.haomeiwen.com/i8542527/afe2c9095cce1154.png)
网友评论