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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值