#include <bits/stdc++.h>
using namespace std;
int main(){
vector<int> ve;
ve.push_back(2);
//访问vector下标为i的元素可用ve[i],ve.at(i)。
//建议用at(i),at(i)会在越界时抛出信息
cout<<ve[0];
cout<<ve.at(0)<<endl;
//vector容器初始化
int arr[5] = {1,2,3,4,5};
vector<int> ve1(arr,arr+5);//复制arr数组元素存到vector,从arr下标为0的元素开始,到下标为5的元素的元素结束
vector<int> ve2(arr,arr+sizeof(arr) / sizeof(arr[0]));//sizeof(arr) / sizeof(arr[0])可获取数组长度
cout<<"容器初始化ve1:"<<ve1.at(0)<<','<<ve1.at(1)<<endl;
cout<<"容器初始化ve2:"<<ve2.at(0)<<','<<ve2.at(1)<<endl;
//vector复制vector
vector<int> ve3(ve1);
cout<<"容器初始化ve3:"<<ve3.at(0)<<','<<ve3.at(1)<<endl;
//vector用迭代器拷贝
vector<int> ve4(ve3.begin(),ve3.end());
cout<<"容器初始化ve4:"<<ve4.at(0)<<','<<ve3.at(1)<<endl;
//vector初始化存储N个相同的数
vector<int> ve5(10,-1);
vector<int>::iterator it;
for( it = ve5.begin();it!=ve5.end();it++) cout<<*it<<' ';//这种迭代器遍历过于麻烦
cout<<endl;
//直接遍历法
for(int i=0;i<ve5.size();i++) cout<<ve5.at(i)<<' ';
//for(auto v:ve5) cout<<v<<' ';//不知道devc++为啥运行不出来
cout<<endl;
//判断是否为空
vector<int> ve6; //空的vector返回1,否则为0
cout<<"ve6为空:"<<ve6.empty()<<endl;
//尾插法,每次在容器最右端(尾部)插入一个元素
vector<int> ve7;
ve7.push_back(1);
ve7.push_back(2);
ve7.push_back(3);
for(int i = 0;i < ve7.size();i++)cout<<ve7[i]<<' ';
cout<<endl;
//前插法,每次在指定位置左边插入一个元素
ve7.insert(ve7.begin()+2,4);
for(int i = 0;i < ve7.size();i++)cout<<ve7[i]<<' ';
cout<<endl;
//插入一次会影响其他元素下标,举个例子
//比如你想在1,2,3的1,2和2,3分别插入0,变成1,0,2,0,3
//首先在1,2之间插入
int arr2[3] = {1,2,3};
vector<int> ve8(arr2,arr2+3);
// vector<int> ve8;//使用尾插法初始化
// ve8.push_back(1);
// ve8.push_back(2);
// ve8.push_back(3);
ve8.insert(ve8.begin()+1,0);
for(int i = 0;i < ve8.size();i++) cout<<ve8.at(i)<<' ';
cout<<endl;
//此时2,3的下标后移一位,建议画图分析,这里不多叙述
ve8.insert(ve8.begin()+3,0);
for(int i = 0;i < ve8.size();i++) cout<<ve8.at(i)<<' ';
cout<<endl;
//某元素前插入多个相同元素
vector<int> ve10;
ve10.push_back(0);
ve10.push_back(1);
ve10.push_back(2);
ve10.insert(ve10.begin()+1,5,2); //插入 五个2
for(int i=0;i<ve10.size();i++)cout<<ve10.at(i)<<' ';
cout<<endl;
//尾删法
ve10.pop_back();
ve10.pop_back();
for(int i=0;i<ve10.size();i++)cout<<ve10.at(i)<<' ';
cout<<endl;
//删除特定范围内的元素
ve10.erase(ve10.begin(),ve10.begin()+2);
for(int i=0;i<ve10.size();i++)cout<<ve10.at(i)<<' ';
cout<<endl;
//清空容器
ve10.clear();
for(int i=0;i<ve10.size();i++)cout<<ve10.at(i)<<' ';
//补充:
//创建5个vector(二维数组)
vector<int> ve11[5];
ve11[0].push_back(1);
ve11[1].push_back(2);
ve11[2].insert(ve11[2].begin(),2,5);
//输出二维数组
for(int i=0;i<5;i++){
for(int j=0;j<ve11[i].size();j++){
cout<<ve11[i].at(j)<<' ';
}
cout<<endl;
}
return 0;
}
捏