vector容器
可以理解为长度可变的数组,数组容量会随着添加和删除动态改变
#include<bits/stdc++.h>
using namespace std;
int main(){
vector<int> a;
for(int i = 0;i < 10;i++){
a.push_back(i);
cout << " 元素个数:" << a.size() << " 数组容量:" << a.capacity() << endl;
}
return 0;
}
从上面例子可以看出,数组容量是按2的整数次幂动态增长、
也可以在创建数组的时候人为规定数组容量,并初始化数组
#include<bits/stdc++.h>
using namespace std;
int main(){
vector<int> a(7,-1);
for(int i = 0;i < a.size();i++){
cout << a[i];
}
cout << endl;
for(int i = 0;i < a.capacity();i++){
cout << a[i];
}
return 0;
}
clear()函数可以清空数组,但不会改变数组的capacity(容量)
#include<bits/stdc++.h>
using namespace std;
int main(){
vector<int> a();
a.clear();
for(int i = 0;i < a.size();i++){
cout << a[i];
}
cout << endl;
cout << a.capacity();
return 0;
}
由于数组被清空,所以第一行什么都没输出,即a.size()为0,但a.capacity()依然为10
a.push_back(9):在a数组最后插入9
a.pop_back():删除a数组最后一个元素
a.begin():返回一个指向第一个元素的指针
a.end():返回一个指向最后一个元素的下一个元素的指针
a.front():返回第一个元素
a.back():返回一个最后一个元素
#include<bits/stdc++.h>
#include<algorithm>
using namespace std;
int main(){
vector<int> a;
for(int i = 0;i < 10;i++){
a.push_back(i+100);
}
for(int i = 0;i < a.size();i++){
cout << a[i];
}
cout << endl;
cout << "front():" << a.front() << endl;
cout << "back():" << a.back() << endl;
cout << "*begin():" << *a.begin() << endl;
cout << "*(end()-1):" << *(a.end()-1)<< endl;
cout << "end()-begin():" << a.end() - a.begin() << endl;
return 0;
}
a.end() 表示a数组最后一个元素的下一个元素的地址
a.end()-1 表示最后一个元素的地址
*(a.end()-1) 表示最后一个元素值
a.insert(插入位置,插入元素值)
#include<bits/stdc++.h>
#include<algorithm>
using namespace std;
int main(){
vector<int> a(5,1);
a.insert(a.begin(),2);
a.insert(a.begin()+2,2);
a.insert(a.end(),3);
a.insert(a.end()-2,3);
for(int i = 0;i < a.size();i++){
cout << a[i] << ' ';
}
cout << endl;
return 0;
}
a.erase(初始位置,结束为止):抹去一个区间内的值
#include<bits/stdc++.h>
#include<algorithm>
using namespace std;
int main(){
vector<int> a;
for(int i = 0;i < 10;i++){
a.push_back(i);
}
for(int i = 0;i < a.size();i++){
cout << a[i] << ' ';
}
cout << endl;
//抹去第一个3到最后所有元素
a.erase(find(a.begin(),a.end(),3),a.end());
for(int i = 0;i < a.size();i++){
cout << a[i] << ' ';
}
return 0;
}
a.resize(100):改变数组大小为100