vector 是 C++ 标准库中的一个动态数组容器,它可以自动管理内存大小,可以在运行时根据需要动态增长或缩小。它是一个非常常用且强大的容器,用于存储一系列元素。下面详细介绍 vector
的使用方法,并提供相应的代码案例。
首先,使用需要引入头文件
。
#include
直接使用 vector
模板类来创建一个 vector 对象。可以创建存储特定类型元素的 vector,格式为: vector<数据类型> 名字
。例如:
vector myVector; // 创建一个存储整数的 vector,名字为myVector
vector myVector; // 创建一个存储字符的 vector,名字为myVector
vector myVector; // 创建一个存储字符串的 vector,名字为myVector
……
此时myVector中没有任何元素,直接进行访问会报错。
可以使用 myVector.resize(num),或者myVector.resize(n, num) 来初始化。
①前者是使用num个0来初始化;
vector < int > myVector;
myVector.resize(5);
//输出内容是:0 0 0 0 0
for (int i = 0; i < myVector.size(); i++) {
cout << myVector[i] << " ";
}
cout << endl;
②后者是使用n个num来初始化。
vector < int > myVector;
myVector.resize(5,10);
//输出内容是:10 10 10 10 10
for (int i = 0; i < myVector.size(); i++) {
cout << myVector[i] << " ";
}
cout << endl;
这种方法在初始化后就进行了赋值,此时myVector.size() == 5。如果使用myVector.resize(num)来修改的话:①对于num ②对于num>myVector.size()的情况,如num==7,会用0来填充没有赋值的部分,此处就是最后两个位置; 类似于resize的用法 这种方法是使用另外一个数组来初始化myVector,注意,这里的testVector也必须是vector类型 ①vector < int > myVector(testVector); ②vector < int > myVector = testVector; vector < int > myVector (*p, *q); 使用另外一个数组的指针来初始化v,这里既可以使用vector的指针,也可以使用普通数组的指针。 和一维数组一样,这里的myVector中没有任何元素,myVector.size() == 0,直接访问会报错。 可以直接使用n和testVector来初始化myVector,但是testVector需要是vctor类型 类似于3.4,这里不在赘述 4.4 使用指针初始化二维vector 既可以使用vector的指针,也可以使用普通数组的指针。 ①使用vector的指针 ②使用普通数组的指针 直接使用下标操作符 使用size()或者capacity()函数 使用 使用 使用 使用 使用 ①如果能在目标vector中找到该数值的元素,直接删除 ②如果目标vector中找不到该数值的元素,不做任何操作,不会报错 直接使用下标操作符 [] 来修改 vector 中特定索引的元素。 使用 使用 使用for循环和索引来遍历 vector 中的元素。 三种方式,推荐第三种,更简洁。 for (int it : myVector){},这里需要指定myVector中元素的类型,因为我定义的myVector元素类型是int,这里就使用int for (auto it : myVector){},这里直接使用auto,不需要根据myVector中元素的类型改变 文章已同步至某乎 [详解-vector] C++必知必会 vector常用各种操作解析 vector < int > myVector = { 1,2,3,4,5 };
myVector.resize(3);
//输出内容是:1 2 3
for (int i = 0; i < myVector.size(); i++) {
cout << myVector[i] << " ";
}
cout << endl;
vector < int > myVector = { 1,2,3,4,5 };
myVector.resize(7);
//输出内容是:1 2 3 4 5 0 0
for (int i = 0; i < myVector.size(); i++) {
cout << myVector[i] << " ";
}
cout << endl;
3.3 vector < int > myVector(num); 或者 vector < int > myVector(n,num);
3.4 vector < int > myVector(testVector); 或者 vector < int > myVector = testVector;
vector < int > testVector = { 1,2,3,4,5 };
vector < int > myVector(testVector);
//输出内容是:1 2 3 4 5
for (int i = 0; i < myVector.size(); i++) {
cout << myVector[i] << " ";
}
cout << endl;
vector < int > testVector = { 1,2,3,4,5 };
vector < int > myVector = testVector;
//输出内容是:1 2 3 4 5
for (int i = 0; i < myVector.size(); i++) {
cout << myVector[i] << " ";
}
cout << endl;
3.5使用指针初始化一维vector;
int arr[5] = { 1,2,3,4,5 };
vector
4.初始化二维 vector 对象:
4.1 vector < vector < int > > myVector;
①可以先使用myVector.resize(n)来初始化这个二维数组的第一维,然后使用一个for循环再初始化第二维。此时myVector中的元素都是空格,不是0。 vector < vector < int > > myVector;
myVector.resize(5);
for (int i = 0; i < 5; i++) {
myVector.resize(5);
}
// 输出的是一片空格
for (int i = 0; i < myVector.size(); i++) {
for (int j = 0; i < myVector[i].size(); i++) {
cout << myVector[i][j] << " ";
}
cout << endl;
}
cout << endl;
4.2 vector < vector < int > > myVector(n, testVector);
vector
4.3 通过复制其他vector的方式
vector
int arr[4][4] = { {1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16} };
vector
5. 访问 vector 中的元素:
[]
来访问 vector 中特定索引的元素。 vector
6.获取 vector 的大小:
vector
7.向 vector 中添加元素:
push_back()
函数将元素添加到 vector 的末尾,默认且只能添加到末尾。 vector
8.向 vector 中插入元素:
insert()
函数来在指定位置插入元素。需要提供插入位置的迭代器和要插入的元素值。 vector
9.删除 vector 中的元素:
pop_back()
函数删除 vector 末尾的元素,默认且只能删除末尾的元素 。 vector
10.删除 vector 中指定位置的元素:
erase()
函数来删除指定位置的元素,需要提供删除位置的迭代器。 vector
11.删除 vector 中指定数值的元素:
remove()
函数来删除指定值的元素。 vector
vector
12.修改 vector 中的元素:
vector
13.查找 vector 中的元素:
find()
函数来查找指定值的元素,或者使用迭代器来遍历查找。①使用 find() 函数查找:
vector
②使用迭代器遍历查找:
vector
14.清空 vector 中的元素:
clear()
函数可以清空 vector 中的所有元素。 vector
15.使用索引遍历 vector 中的元素:
vector
16.使用迭代器遍历 vector:
①第一种通过迭代器遍历的方法
vector
②第二种通过迭代器遍历的方法
vector
③第三种通过迭代器遍历的方法(推荐)
vector