Vector Constructor
#include<iostream>
#include<vector>
using namespace std;
int main(){
vector<int> a1;//一个为空的vector
vector<int> a2(4,1);//容量为4,每个元素为1
for(int i=0;i<a2.size();i++)cout<<a2[i]<<" \n"[i==a2.size()-1];
//当i=a2.size()-1时执行换行
vector<int> a3(a2.begin(),a2.end());//用a2一块区域初始化a3
for(int i=0;i<a3.size();i++)cout<<a3[i]<<" \n"[i==a3.size()-1];
int a[]={2,35,23,22234,53232,324};
vector<int>a4 (a,a+sizeof(a)/sizeof(a[0]));
for(int i=0;i<a4.size();i++)cout<<a4[i]<<" \n"[i==a4.size()-1];
return 0;
}
输出·
1 1 1 1
1 1 1 1
2 35 23 22234 53232 324
Vector Capacity
#include<iostream>
#include<vector>
using namespace std;
int main(){
vector<int> a1;//一个为空的vector
if(a1.empty())cout<<"不包含元素,为空"<<endl;
int a[]={2,35,23,22234,53232,324};
vector<int>a2 (a,a+sizeof(a)/sizeof(a[0]));
cout<<"a2的包含元素的大小为:"<<a2.size()<<endl;
cout<<"a2能包含元素的最大容量为:"<<a2.max_size()<<endl;
cout<<"a2所分配的元素空间大小为:"<<a2.capacity()<<endl;
a2.resize(10);//重置大小,多余的为默认值
for(int i=0;i<a2.size();i++)cout<<a2[i]<<" \n"[i==a2.size()-1];
cout<<"a2所分配的元素空间大小为:"<<a2.capacity()<<endl;
a2.resize(5);//多于的元素将为析构
for(int i=0;i<a2.size();i++)cout<<a2[i]<<" \n"[i==a2.size()-1];
cout<<"a2所分配的元素空间大小为:"<<a2.capacity()<<endl;
a2.reserve(20);//当大于capacity,扩增容量
for(int i=0;i<a2.size();i++)cout<<a2[i]<<" \n"[i==a2.size()-1];
cout<<"a2所分配的元素空间大小为:"<<a2.capacity()<<endl;
a2.reserve(10);//当<=capacity,不影响
for(int i=0;i<a2.size();i++)cout<<a2[i]<<" \n"[i==a2.size()-1];
cout<<"a2所分配的元素空间大小为:"<<a2.capacity()<<endl;
return 0;
}
输出
不包含元素,为空
a2的包含元素的大小为:6
a2能包含元素的最大容量为:4611686018427387903
a2所分配的元素空间大小为:6
2 35 23 22234 53232 324 0 0 0 0
a2所分配的元素空间大小为:12
2 35 23 22234 53232
a2所分配的元素空间大小为:12
2 35 23 22234 53232
a2所分配的元素空间大小为:20
2 35 23 22234 53232
a2所分配的元素空间大小为:20
Vector Access
#include<iostream>
#include<vector>
using namespace std;
int main(){
int n=5;
vector<int> a1(n);//一个为空的vector
for(int i=0;i<n;i++)a1.at(i)=2*i;//at获取索引的下标的索引,会自动检查边界
for(int i=0;i<n;++i)cout<<a1[i]<<" \n"[i==a1.size()-1];//对运算符[]进行重载
a1.front()++;//获取a1的第一个元素
cout<<"a1的第一个元素:"<<a1.front()<<endl;
a1.back()++;//获取a1最后一个元素
cout<<"a1的第一个元素:"<<a1.back ()<<endl;
}
输出
0 2 4 6 8
a1的第一个元素:1
a1的第一个元素:9
Vector Modifiers
#include<iostream>
#include<vector>
using namespace std;
int main(){
int n =5;
vector<int> a1;//一个为空的vector
for(int i=0;i<n;i++)a1.push_back(2*i);//向a1的尾部插入一个元素
for(int i=0;i<a1.size();++i)cout<<a1[i]<<" \n"[i==a1.size()-1];//对运算符[]进行重载
a1.pop_back();//从a1的尾部删除一个元素
for(int i=0;i<a1.size();++i)cout<<a1[i]<<" \n"[i==a1.size()-1];//对运算符[]进行重载
vector<int>::iterator it=a1.begin();//获取迭代器对象
//auto it = a1.begin();//使用auto自己推导元素类型
a1.insert(it+2,3);//向索引为2的位置插入一个与元素,需使用迭代器
for(int i=0;i<a1.size();++i)cout<<a1[i]<<" \n"[i==a1.size()-1];//对运算符[]进行重载
a1.insert(it+2,2,5);//从索引2开始插入2个5
for(int i=0;i<a1.size();++i)cout<<a1[i]<<" \n"[i==a1.size()-1];//对运算符[]进行重载
vector<int> a2;
a2.push_back(21);
a2.push_back(43);
a1.insert(it+2,a2.begin(),a2.end());
for(int i=0;i<a1.size();++i)cout<<a1[i]<<" \n"[i==a1.size()-1];//对运算符[]进行重载
a1.erase(it+1);//删除索引为1的元素
for(int i=0;i<a1.size();++i)cout<<a1[i]<<" \n"[i==a1.size()-1];//对运算符[]进行重载
a1.erase(it,it+2);//删除[0,2)之间的元素
for(int i=0;i<a1.size();++i)cout<<a1[i]<<" \n"[i==a1.size()-1];//对运算符[]进行重载
a1.swap(a2);//于a2交换元素
for(int i=0;i<a1.size();++i)cout<<a1[i]<<" \n"[i==a1.size()-1];//对运算符[]进行重载
a1.clear();//清空容器元素
cout<<"a1的元素大小: "<<a1.size()<<endl;
return 0;
}
0 2 4 6 8
0 2 4 6
0 2 3 4 6
0 2 5 5 3 4 6
0 2 21 43 5 5 3 4 6
2 21 43 5 5 3 4 6
43 5 5 3 4 6
21 43
a1的元素大小: 0
Vector Iterators:
#include<iostream>
#include<vector>
using namespace std;
int main(){
int n =5;
vector<int> a1;//一个为空的vector
for(int i=0;i<n;i++)a1.push_back(2*i);//向a1的尾部插入一个元素
vector<int>::iterator it;
for(it=a1.begin();it!=a1.end();it++)cout<<*it<<" \n"[it==a1.end()-1];
//正向迭代输出元素
for(vector<int>::reverse_iterator it=a1.rbegin();it!=a1.rend();it++)cout<<*it<<" \n"[it==a1.rend()-1];
// 反向迭代输出元素
for(auto a:a1)cout<<a<<" ";
// auto 可以自己推导出类型
}
0 2 4 6 8
8 6 4 2 0
0 2 4 6 8