C++从零开始的打怪升级之路(day26)

这是关于一个普通双非本科大一学生的C++的学习记录贴

在此前,我学了一点点C语言还有简单的数据结构,如果有小伙伴想和我一起学习的,可以私信我交流分享学习资料

那么开启正题

今天分享的是关于vector

1.迭代器失效

首先我们回顾迭代器的基本用法

void Test1()
{
	vector v;
	v.push_back(1);
	v.push_back(2);
	v.push_back(3);
	v.push_back(4);
	v.push_back(5);

	vector::iterator it = v.begin();
	while (it != v.end())
	{
		cout << *it << " ";
		++it;
	}
	cout << endl;
}

这样可以顺利遍历并输出vector中的数据,为了明白迭代器失效 

我们来看下面的代码

void Test1()
{
	vector v;
	v.push_back(1);
	v.push_back(2);
	v.push_back(3);
	v.push_back(4);
	v.push_back(5);

	vector::iterator it = v.begin();
	v.push_back(6);
	v.push_back(7);
	while (it != v.end())
	{
		cout << *it << " ";
		++it;
	}
	cout << endl;
}

乍一看好像没有任何问题,但是试着运行代码会发现程序报错,这是为什么呢

我们来回顾vector的插入数据,在容量不够的时候,会先增容,而增容会使迭代器原本指向的位置失去访问权限,这时再访问就会报错

新手写博客,有不对的位置希望大佬们能够指出,也谢谢大家能看到这里,让我们一起学习进步吧!!

你可能感兴趣的:(c++,算法,开发语言)