iterator在vector中的使用

iterator在vector中的使用

iterator也被称为迭代器,可以指向一个范围内(如queue、vector、set等等)的元素,与指针类似。迭代器分为五个不同的类别,输入、输出、向前、双向、随机访问。
在vector中的迭代器属于随机访问迭代器。
使用时需要注意,一个长度为5的vector对象,它的end指向的元素相当于字符串中的‘\0’,是一个无效的元素,需要进行-1操作,才是真实的指向元素尾的迭代器。

	vector<int> a;
	for(int i = 1; i < 6; i++)
		a.push_back(i);
	int size;
	size = a.size();
	cout<<"The vector's length is "<<size<<endl;
	vector<int>::iterator iter = a.end();
	cout<<*iter<<endl;

在这里,我们调试可以看到*iter的值为-1163005939
iterator在vector中的使用
输出是0.
而当我们让iter减1时,它指向的就是数组尾的元素。

int main(void)
{
	//d迭代器的使用
	vector<int> a;
	for(int i = 1; i < 6; i++)
		a.push_back(i);
	int size;
	size = a.size();
	cout<<"The vector's length is "<<size<<endl;
	vector<int>::iterator iter = a.end();
	cout<<*iter<<endl;
	iter = iter - 1;
	cout<<*iter<<endl;

这里*iter的值为5.
下面是有关vector的其他运算

int main(void)
{
	//d迭代器的使用
	vector<int> a;
	for(int i = 1; i < 6; i++)
		a.push_back(i);
	int size;
	size = a.size();
	cout<<"The vector's length is "<<size<<endl;
	vector<int>::iterator iter = a.end();
	cout<<*iter<<endl;
	iter = iter - 1;
	cout<<*iter<<endl;
	iter = iter - 1;
	cout<<*iter<<endl;
	iter = iter + 2;
	cout<<*iter<<endl;
	iter = iter - 1;
	cout<<*iter<<endl;

运行截图如下所示
iterator在vector中的使用
我们可以看到,迭代器指向是有一定范围限制的,当超出范围时就会为随机数,使用时需要注意。
当然,通过官方文档得知,迭代器除了允许进行算符运算(++,–)之外,也可以进行判断,取值,赋值(如将vector的begin,end赋值给迭代器),随机访问的支持像数组一样的通过下标取值的操作(例如a[n])。