目录
vector是什么?
vector的基本使用
vector常用函数接口
文章导读
在数据结构与算法
的学习中,我们曾经认识过一个数据结构叫做顺序表
。而我们之前用C语言实现的动态顺序表
其实就是模仿STL
中的vector
容器,所以说我们其实对vector
已经不算是完全陌生了,那么接下来就一起来看看STL
中的vector
到底是什么以及如何使用吧!
正文
vector是什么?
在C++中,STL(Standard Template Library)提供了一个名为vector的容器类,它是一个动态数组,能够存储同一类型的元素。vector的实现在底层使用了动态内存分配和内存管理技术,因此它能够自动调整大小,并且可以高效地插入和删除元素。
vector提供了许多成员函数,如push_back()、pop_back()、at()、front()、back()等,这些函数可以用来操作vector中的元素。vector还支持迭代器,可以使用迭代器来访问vector中的元素。此外,vector还支持一些算法,如sort()、find()、count()等,可以方便地对vector中的元素进行排序、查找和计数等操作。
vector是C++ STL中最常用的容器之一,它可以代替数组,提供了更方便、更安全的操作方式,并且在插入和删除元素时不需要手动管理内存,因此被广泛应用于各种场景。
vector的基本使用
- 使用
vector
之前首先需要包含头文件< vector >
;
#include<vector>
- 创建一个对象;
- 注意
vector
与string
类的使用不同,vector
并不是类型名,使用时需要指定vector
中的元素类型
,例如:vector< typename > 对象名
vector<int> v1; //元素类型为int vector<char> v2; //元素类型为char vector<string> v3; //元素类型为string vector<vector<int>> v4; //元素类型为vector<int>
- 向vector中添加元素;
vector<int> v1; //使用push_back进行尾插 v1.push_back(1); v1.push_back(2);
- 访问vector中的元素;
cout << v1[0] << endl; //使用下标+[]进行元素访问 cout << v1[1] << endl; cout << v1.front() << endl; //获取第一个元素 cout << v1.back() << endl; //获取最后一个元素
- 删除vector中的元素;
//使用pop_back进行尾删 v1.pop_back();
- 获取vector的大小和容量;
cout << v1.size() << endl; cout << v1.capacity() << endl;
- 遍历vector中的元素;
for (int i = 0; i < v1.size(); i++) { cout << v1[i] << ' '; } cout << endl; //使用范围for for (auto e : v1) { cout << e << ' '; } cout << endl;
- 向指定位置插入元素;
//v1.begin()——返回一个指向字符串第一个元素的迭代器 v1.insert(v1.begin() + 3, 30); //在第三个位置插入元素
- 删除指定位置的元素;
v1.erase(v1.begin() + 4); //删除第四个位置的元素
vector常用函数接口
at
:访问vector
中指定下标的元素,支持下标越界检查
;
v1.at(0); //访问下标为0的元素 v1.at(2);
empty
:判断vector
是否为空;
cout << v1.empty() << endl; • 1
resize
:改变vector
的大小,若扩容,则还可以初始化扩容的部分;
v1.resize(10, 0); //扩容,并初始化为0
reserve
:扩容;
v1.reserve(20); //扩容,使capacity为20 • 1
emplace_back
:在vector
的末尾添加一个元素,效率比push_back
更高;
v1.emplace_back(10); //尾插10
emplace
:在vector
的指定位置插入一个元素,效率比insert
更高;
v1.emplace(v1.begin() + 4, 40); //在下标为4的位置插入40
swap
:交换两个vector
的元素;
vector<int> v1; vector<int> v2; v1.swap(v2);
clear
:清空vector
中的所有元素。
v1.clear();
总结,以上函数接口在平时做题当中已经足够使用了,想要了解更多接口的使用,我们必须学会查阅官方文档。