转载 点击打开链接
插入操作:
理论知识
² vector.insert(pos,elem); //在pos位置插入一个elem元素的拷贝,返回新数据的位置。
² vector.insert(pos,n,elem); //在pos位置插入n个elem数据,无返回值。
² vector.insert(pos,beg,end); //在pos位置插入[beg,end)区间的数据,无返回值
简单案例
vector<int> vecA;
vector<int> vecB;
vecA.push_back(1);
vecA.push_back(3);
vecA.push_back(5);
vecA.push_back(7);
vecA.push_back(9);
vecB.push_back(2);
vecB.push_back(4);
vecB.push_back(6);
vecB.push_back(8);
vecA.insert(vecA.begin(), 11); //{11, 1, 3, 5, 7, 9}
vecA.insert(vecA.begin()+1,2,33); //{11,33,33,1,3,5,7,9}
vecA.insert(vecA.begin() , vecB.begin() , vecB.end() ); //{2,4,6,8,11,33,33,1,3,5,7,9}
测试代码:
- #include <iostream>
- using namespace std;
- #include "vector"
- void printV(vector<int> &v)
- {
- for (int i = 0; i < v.size();i++)
- {
- cout <<v[i]<< " ";
- }
- cout << endl;
- }
- //插入操作
- void main1()
- {
- vector<int> v1;
- v1.insert(v1.begin(),1);//在开始位置插入元素1
- printV(v1);
- v1.insert(v1.begin(),2,33);//在开始位置插入两个33
- printV(v1);
- v1.insert(v1.begin(),v1.begin(),v1.end());//在开始位置插入整个区间元素
- printV(v1);
- }
- int main()
- {
- cout << "插入操作:" << endl;
- main1();
- return 0;
- }
vector的删除
理论知识
² vector.clear(); //移除容器的所有数据
² vec.erase(beg,end); //删除[beg,end)区间的数据,返回下一个数据的位置。
² vec.erase(pos); //删除pos位置的数据,返回下一个数据的位置。
简单案例:
删除区间内的元素
vecInt是用vector<int>声明的容器,现已包含按顺序的1,3,5,6,9元素。
vector<int>::iterator itBegin=vecInt.begin()+1;
vector<int>::iterator itEnd=vecInt.begin()+2;
vecInt.erase(itBegin,itEnd);
//此时容器vecInt包含按顺序的1,5,6,9三个元素。
假设 vecInt 包含1,3,2,3,3,3,4,3,5,3,删除容器中等于3的元素
for(vector<int>::iterator it=vecInt.being(); it!=vecInt.end(); ) //小括号里不需写 ++it
{
if(*it == 3)
{
it = vecInt.erase(it); //以迭代器为参数,删除元素3,并把数据删除后的下一个元素位置返回给迭代器。
//此时,不执行 ++it;
}
else
{
++it;
}
}
//删除vecInt的所有元素
vecInt.clear(); //容器为空
测试代码:
- #include <iostream>
- using namespace std;
- #include "vector"
- void printV(vector<int> &v)
- {
- for (int i = 0; i < v.size();i++)
- {
- cout <<v[i]<< " ";
- }
- cout << endl;
- }
- //删除操作
- void main2()
- {
- vector<int> v1(10);
- for (int i = 0; i < v1.size(); i++)
- {
- v1[i] = i + 1;
- }
- printV(v1);
- v1.erase(v1.begin(),v1.begin()+4);//区间删除
- printV(v1);
- v1.erase(v1.begin());//头部删除
- printV(v1);
- v1[0] = 23;
- v1[1] = 22;
- printV(v1);
- for (vector<int>::iterator it = v1.begin(); it != v1.end();)//删除容器里等于8的元素
- {
- if (*it == 8)
- {
- it = v1.erase(it);
- }
- else
- it++;
- }
- printV(v1);
- }
- int main()
- {
- cout << "删除操作:" << endl;
- main2();
- return 0;
- }