#include <iostream>
#include <vector>
using namespace std;
//vector 是动态数组,连续内存空间,具有随机存取效率高的优点
//但是在指定位置插入数据效率较低
void show(vector<int> &n,string s);
//循环创建
vector<int> v_c()
{
vector<int> v_0;
int i =5;
while(i--)
{
v_0.push_back(i);
}
return v_0;
}
//vector 构造函数
void vector_create()
{
//初始化vector
vector<int> v_0=v_c();
show(v_0,"v_0");
//从v中初始化
vector<int> v_1(v_0.begin(),v_0.end());
//或者是
v_1.assign(v_0.begin(),v_0.end());
show(v_1,"v_1");
//拷贝n个elem到v_2中
int elem = 11;
int n = 2;
vector<int> v_2(n,elem);
//或者是
v_2.assign(n,elem);
show(v_2,"v_2");
//拷贝构造函数
vector<int> v_3(v_0);
show(v_3,"v_3");
//使用数组构造
int arr[] = {1,2,3,4,5};
vector<int> v_5(arr,arr+sizeof(arr)/sizeof(int));
//或者是
v_5.assign(arr,arr+sizeof(arr)/sizeof(int));
show(v_5,"v_5");
//直接等于号赋值
vector<int> f;
f=v_0;
show(f,"f");
//元素互换
vector<int> h;
h.swap(f);
show(h,"h");
}
//vector 大小操作
void vector_some()
{
vector<int> v_0=v_c();
//返回容器中元素个数
int size = v_0.size();
cout<<"size="<<size<<endl;
//判断是否为空
bool b = v_0.empty();
cout<<"b="<<b<<endl;
//重新指定容器长度为num,若容器边长,则以默认值填充,若变短,则删除
int num = 20;
v_0.resize(num);
//若边长 则以elem为填充
int elem = 5;
v_0.resize(num,elem);
//获取容量
int s = v_0.capacity();
cout<<"s="<<s<<endl;
//容器预留len个元素长度,预留位置不可初始化,元素不可访问
int len = 20;
v_0.reserve(len);
//返回索引
int ms = v_0.at(3);
cout<<"ms="<<ms<<endl;
//[]访问
int ms2 = v_0[2];
cout<<"ms2="<<ms2<<endl;
//返回第一个元素
int ms3= v_0.front();
cout<<"ms3="<<ms3<<endl;
//返回最后一个元素
int ms4=v_0.back();
cout<<"ms4="<<ms3<<endl;
}
//插入和删除
void push_pop()
{
vector<int> v_0=v_c();
//在i_v位置插入count个ele元素
vector<int>::iterator i_v=v_0.begin();
int count=4;
int ele = 32;
v_0.insert(i_v,count,ele);
//push_back尾部插入
int ele2=2;
v_0.push_back(ele2);
//pop_back删除最后一个元素
v_0.pop_back();
//删除迭代器区间元素
vector<int>::iterator i_v_1=v_0.begin();
vector<int>::iterator i_v_2=v_0.end();
v_0.erase(i_v_1,i_v_2);
//删除指定元素
vector<int>::iterator i_v_3=v_0.begin();
v_0.erase(i_v_3);
//清空元素
v_0.clear();
//vector是单口容器,在指定位置操作数据效率低下,在端口操作数据效率较高
}
//遍历方法
void show(vector<int> &n,string s)
{
for(vector<int>::iterator lt = n.begin();lt!=n.end();lt++)
{
cout<<s+"="<<*lt<<",";
}
cout<<endl;
}
int main()
{
vector_create();
vector_some();
push_pop();
cout<<"...................."<<endl;
}