您好,欢迎来到叨叨游戏网。
搜索
您的当前位置:首页C++中vector容器的3种重载形式的插入操作

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

来源:叨叨游戏网
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();	//创建迭代器pD
	pD = 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;
}


因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- gamedaodao.net 版权所有 湘ICP备2024080961号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务