迭代器是广义上的指针,事实上,它可以是指针,也可以是一个对其执行类似指针的操作——如解除引用(如operator*())和递增(如operator++()) ——的对象。

通过将指针广义化为迭代器,让STL能够为各种不同的容器类(包括哪些简单指针无法处理的类)提供统一的接口。每个容器类都定义了一个合适的迭代器,该迭代器的类型是一个名为iterator的typedef,其作用域为整个类。

#include <iostream>
#include <vector>
using namespace std;

int main()
{
	vector<int> scores(5);
	for(int i=0;i<5;i++)
          cin>>scores[i];
	
        //int *pd=scores.begin();                 //Error:不存在从"std::_Vector_iterator<std::Vector_val<int,std::allocator<int>>>"到"int *"的适当转换函数
	vector<int>::iterator pd = scores.begin();  	//auto pd=scores.begin()同样可行 
	*pd = 22.3;
	cout << *pd << endl;
	++pd;
	cout << *pd << endl;

	return 0;
}

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐