目录
1.vector容器简介
vector容器,也叫向量容器,功能与数组十分相似,可以理解成可变数组,在执行对数组的操作时效率较高。
使用vector容器时要包含头文件#include<vector>
2.初始化
(1)使用push_back依次放入值
vector<int> arr;
for(int i=0;i<5;i++)
{
arr.push_back(i);
}
for(int i=0;i<5;i++)
{
cout<<arr[i]<<' '; //输出0 1 2 3 4
}
(2)使用vector(v.begin(),v.end())拷贝构造
vector<int> arr;
for(int i=0;i<5;i++)
{
arr.push_back(i);
}
vector<int> arr1(arr.begin(),arr.end()); //拷贝构造
for(int i=0;i<5;i++)
{
cout<<arr1[i]<<' '; //输出0 1 2 3 4
}
(3)使用vector(n,elem)赋值构造,即n个elem元素
vector<int> arr(5,1); //5个1
for(int i=0;i<5;i++)
{
cout<<arr[i]<<' '; //输出1 1 1 1 1
}
(4)使用常量初始化
vector<int> arr{1,2,3,4,5};
for(int i=0;i<5;i++)
{
cout<<arr[i]<<' '; //输出1 2 3 4 5
}
3.增加
(1)push_back 尾部插入
vector<int> arr;
for(int i=0;i<5;i++)
{
arr.push_back(i);
}
for(int i=0;i<5;i++)
{
cout<<arr[i]<<' '; //输出0 1 2 3 4
}
(2)insert(pos,elem) 指定位置插入
vector<int> arr(5,1);
arr.insert(arr.begin(),2); //开头插入一个2
for(int i=0;i<6;i++)
{
cout<<arr[i]<<' '; //输出2 1 1 1 1 1
}
(3)insert(pos,int count,elem) 指定位置插入count个elem
vector<int> arr(5,1);
arr.insert(arr.begin(),3,2); //开头插入三个2
for(int i=0;i<8;i++)
{
cout<<arr[i]<<' '; //输出2 2 2 1 1 1 1 1
}
4.删除
(1)pop_back 删除最后一个元素
vector<int> arr{1,2,3,4,5};
arr.pop_back(); //删除尾部元素
for(int i=0;i<4;i++)
{
cout<<arr[i]<<' '; //输出1 2 3 4
}
(2)erase(pos) 删除指定位置
vector<int> arr{1,2,3,4,5};
arr.erase(arr.end()-1); //删除尾部元素
for(int i=0;i<4;i++)
{
cout<<arr[i]<<' '; //输出1 2 3 4
}
(3)erase( begin,end) 删除begin到end间元素
vector<int> arr{1,2,3,4,5};
arr.erase(arr.begin(),arr.end()); //删除
for(int i=0;i<arr.size();i++)
{
cout<<arr[i]<<' '; //输出空
}
(4) clear() 清空所有元素
vector<int> arr{1,2,3,4,5};
arr.clear(); //清空
for(int i=0;i<arr.size();i++)
{
cout<<arr[i]<<' '; //输出空
}
5.其它操作
(1)迭代器iterator,可以看成指针,一般用于遍历或寻找指定位置
vector<int> arr{1,2,3,4,5};
for (vector<int>::iterator it = arr.begin(); it != arr.end(); it++)
{
cout << *it <<' '; //输出1 2 3 4 5
}
(2)front()和back(),返回第一个和最后一个元素
vector<int> arr{1,2,3,4,5};
cout<<arr.front()<<endl; //输出1
cout<<arr.back()<<endl; //输出5
(3)size() 返回容器大小
vector<int> arr{1,2,3,4,5};
cout<<arr.size()<<endl; //输出5
(4)swap()交换两个容器
vector<int> arr1{1,2,3,4,5};
vector<int> arr2{2,4,6,8};
arr1.swap(arr2); //交换
for(int i=0;i<arr1.size();i++) cout<<arr1[i]<<' '; //2 4 6 8
cout<<endl;
for(int i=0;i<arr2.size();i++) cout<<arr2[i]<<' '; //1 2 3 4 5
(5)empty() 判断是否为空,如果为空,返回值为1,反之为0
vector<int> arr{1,2,3,4,5};
cout<<arr.empty(); //输出0