C++中vector容器的3种重载形式的插入操作

来源:互联网 发布:淘宝客服服务助手 编辑:程序博客网 时间:2024/06/03 22:06
C++中vector容器不管是插入或者删除,会导致内存重新分配,迭代器也会失效。下面对迭代器失效问题进行分析和解决
#include <iostream>#include <vector>#include <list>#include <deque>using namespace std;void disp(vector<int> & x)//定义disp函数用以输出容器对象所有元素{vector<int>::iterator it = x.begin();while (it != x.end()){cout << (*it) << "  ";it++;}}int main(){//1. 创建一个vector<int>容器对象vector<int> obD(5, 0);//2. insert()的重载形式vector<int>::iterator pD = obD.end();//创建迭代器pDpD = obD.insert(pD, 1);//在尾部插入元素,并使迭代器指向新插入的disp(obD);cout << endl;//3. insert()的重载形式obD.insert(pD, 2, 3);//在新插入的元素之前插入两个元素disp(obD);cout << endl;//4. insert()的重载形式pD = obD.begin();//很重要,插入后,原来的迭代器可能失效int sz[3] = {7,8,9};obD.insert(pD, sz, sz + 3);//将两个指针(相当于迭代器)插入到头部disp(obD);cout << endl;//5. 上述插入操作对list, vector, deque三种容器都适合. 可自行测试getchar();return 0;}

0 0
原创粉丝点击