<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path> </svg> <p><strong>C++教学总目录</strong></p>
讯享网
vector是表示大小可以改变的数组的序列容器,vector是一个模板类,可以存储int、double、string等类型。包含于头文件<vector>
vector实际上跟顺序表很相似,我们可以把它当作顺序表来使用。

讯享网
T代表数据类型,后面的Alloc实际上是空间配置器,也就是内存池,平时使用的时候不需要管Alloc,只需要指明数据类型即可。例如:vector<int>、vector<string>
那么使用如何使用vector来充当二维数组存储int类型数据呢?
vector<vector<int>>,如图:


第一个相当于是无参的构造函数,这里这个参数是调用了空间配置器来获取空间的——这里不管。第二个构造函数相当于给n个val进行初始化。第三个构造函数使用的是迭代器区间初始化(记得左闭右开)。第四个就是拷贝构造函数了。使用如下:
讯享网
v1-v5容器中数据如下:

赋值运算符重载类似string,这里不在赘述。

begin、end为正向迭代器,支持普通对象和const对象。
rbegin、rend为反向迭代器,支持普通对象和const对象。
在string介绍我们说过,cbegin、cend实际上对应的是const对象的正向迭代器,但begin、end已经有重载了,所以都可以使用。crbegin、crend同理。
下面代码遍历vector:


1、size返回当前容器数据个数。
2、返回容器可以存储的最大数据个数——没有什么意义
3、修改数据个数——类似前面string,可以扩容和减少数据个数。
4、返回当前容器的容量。
5、判断当前容器是否为空——即是否有数据
6、扩容
7、这个目前没什么用——有兴趣自行了解。
主要来看resize和reserve:


这里的resize有点像前面构造函数给n个val初始化。当所给的n小于size()时,将缩小size到n,当n>size()时,将开空间+初始化。而reserve就是单纯的开空间。这里的几个函数都类似string,不在赘述。

1、重载了operator[],所以可以像数组一样使用。
2、at函数传参也是数组下表,但是at函数越界是抛异常,而operator[]越界直接断言程序就崩了。所以operator[]的检查更加严格
3、front获取数组头部元素,back获取数组尾部元素。

1、push_back和pop_back尾插和尾删。但是并没有头插和头删,因为vector是顺序表,头插和头删时间复杂度为O(N),效率非常低下。但是可以使用insert和erase实现头插头删。
讯享网
2、insert:支持在任意位置插入数据

这里位置给的是迭代器,使用如下:

这里使用的是第一个函数,返回值是迭代器——也就是插入位置的迭代器。

这里演示的是第二个insert函数

这里是第三个函数,可以支持插入一段迭代器区间,演示插入的是字符,字符转换成对应的ASCII码值头插到v中。
3、erase函数

支持删除某个位置的值、支持删除一段迭代器区间。使用如下:

4、assign函数

这个函数是将所有内容清空,然后再进行初始化的。使用如下:
讯享网
5、其他函数
swap函数类似string,交换两个vector的值。clear就是清除容器中的所有元素。
另外有两个C++11新增的函数,这里涉及到了C++11的右值引用移动语义和可变参数包,这个到C++11再说。
头文件<algorithm>包含了许多算法,例如排序、查找等。这里我们就介绍这两个函数。

sort函数是用来排序的,前两个参数为迭代器区间,如果不给第三个参数,默认是升序。如果要排降序,需要通过第三个参数来实现。第三个参数就是仿函数——后面会介绍
1、使用sort函数实现升序:

2、使用sort函数实现降序:


find函数给出一段迭代器区间和要查找的val。
3、使用find函数查找容器v中的20,并删除。

algorithm库中还有很多其他的函数,大家自行学习。常用的有:swap、max、min等等
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/194295.html