vector<int> vec; //声明一个int型向量
vector<int> vec(8); //声明一个初始大小为8的int型向量
vector<int> vec(10, -1); //声明一个初始大小为10且值都是-1的int型向量
vector<int> vec{1, 2, 3, 4, 5}; //声明一个int型变量并依次赋值
vector<int> vec(tmp); //声明并用tmp向量初始化vec向量
vector<int> vec(temp.begin(), temp.begin()+3); //用向量temp的第0个到第2个值初始化vec向量
int arr[5] = {1, 2, 3, 4, 5};
vector<int> vec(arr, arr + 5); //将arr数组的元素用于初始化vec向量
vector<int> vec(&arr[1], &arr[4]); //将arr[1]~arr[4]范围内的元素作为vec的初始值
vector<vector<int>> vec; //声明一个二维数组
vector<vector<int>> vec(4); //声明一个4行的二维数组
vector<vector<int>> vec(4, vector<int>(5,6)); //声明一个4行5列的二维数组并赋值维6
vector<vector<vector<int>>> a; //声明一个三维数组
vector<vector<vector<int>>> a(4); //声明一个三维数组,第一维度为4
// 赋值时会先清空数组
vector<int> v1{ 0, 3, 5, 7, 8, 1, 4, 9, 2, 6 };
vector<int> v2;
//v2.assign(v1.ita,v1.itb) 将动态数组v1的[ita,itb)赋值给动态数组v2
v2.assign(v1.begin(), v1.begin()+8);
//v.assign(n,p) 给动态数组v赋值n个元素p
v2.assign(10, 7);
不可使用length函数获取长度。
vector<int> vec(4)
int len = vec.size() // len = 4;
配合初始化使用,随心所欲设定数组。
vector<vector<int>> array(4); //声明一个4行的二维数组,对每行分别定义列数为5并赋值为6
for(int i=0;i<4;i++) {
array[i].resize(5,6);
}
vector<vector<int>> array;
array.resize(row, vector<int>(col)); //修改二维数组大小为row行col列
vector<vector<vector<int>>> a(2); //声明一个三维数组,对第一维度定义为2
for (int n = 0; n < 2; n++){ //对三维数组第二维度定义为4
a[n].resize(4);
}
for (int i = 0; i < 2; i++){ //对三维数组第三维度定义为2并赋初值8
for (int j = 0; j < 4; j++){
a[i][j].resize(2,8);
}
}
有下标访问、迭代器访问、指针访问及其他等方式。
vector<int> vec{1, 2, 3, 4, 5};
//通过下标访问数组
for(int i = 0; i < vec.size(); i++){
cout << vec[i]; //依次输出 1 2 3 4 5
}
//通过迭代器访问数组
for(vector<int>::iterator iter = vec.begin(); iter != vec.end(); iter++){
cout << *iter; //依次输出 1 2 3 4 5
}
//通过指针访问数组
int *p = vec.data();
for (int i = 0; i < 5; i++){
cout << *p++; //依次输出 1 2 3 4 5
}
//其他方式
int m = vec.front() // m = 1
int n = vec.back() // n = 5
使用时,要清楚数组在时刻变化。
vector<int> v;
//v.push_back(p) 在数组v的末尾添加元素p
v.push_back(1);
v.push_back(2);
v.push_back(3);
//v.insert(v.it,p) 在数组v.it指向位置插入元素p
v.insert(v.begin(),8);
v.insert(v.begin()+2,1);
v.insert(v.end(),3);
//v.insert(v.it,n,p) 在数组v.it指向位置插入n个元素p
v.insert(v.end(),4,1);
使用时,要清楚数组在时刻变化。
vector v{1, 2, 3, 4, 5, 6, 7, 8, 9};
vector<int> v{1, 2, 3, 4, 5, 6, 7, 8, 9};
//v.pop_back() 删除数组v末尾的元素
v.pop_back();
v.pop_back();
v.pop_back();
//v.erase(v.it) 删除数组v.it指向位置的元素
v.erase(v.begin());
v.erase(v.begin()+2);
v.erase(v.end()-1);
//v.erase(v.it,n) 该函数未定义
v.erase(v.end(),4); // error
remove函数有些特殊,它并不是单纯的删除元素,只是在去掉指定元素后,将末尾的p个元素依次再添加到数组末尾。
其中,p为删除掉的元素个数。
vector<int> v{ 0, 3, 5, 7, 5, 1, 4, 9, 2, 6 };
remove(v.begin(), v.end(), 5); // v = { 0, 3, 7, 1, 4, 9, 2, 6, 2, 6}
vector<int> v1{ 1, 2, 3};
vector<int> v2{ 4, 5, 6};
//或者v1.swap(v2),输出结果相同
swap(v1, v2); // v1{ 4, 5, 6} v2{ 1, 2, 3}
reverse(v.begin(), v.end()); // v1{ 3, 2, 1}
需包含< algorithm>头文件。
vector<int> v{ 0, 3, 5, 7, 8, 1, 4, 9, 2, 6};
//默认情况下升序排列
sort(v.begin(), v.end()); // v{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
//可自定义排序方式(此为降序)
bool Comp(const int &a, const int &b){
return a>b;
}
sort(v.begin(), v.end(), Comp); // v{ 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}
//亦可函数内部自定义
sort(v.begin(), v.end(), [](int &a, int &b){return a>b;}); // v{ 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}
vector<int> v{ 0, 3, 5, 7, 8, 1, 4, 9, 2, 6 };
v.clear(); // v = {};
v.empty(); // 1 (v为空则输出1)