迭代器简介

       迭代器提供了比下标操作更通用的遍历容器雷元素的方法。其对所有的容器都适用,现代C++程序更加倾向于适用迭代器而不是下标操作。

	//迭代器测试
	vector<int>::iterator begin = v3.begin();  //指向容器的第一个元素
	vector<int>::iterator end = v3.end();	//z指向容器末端元素的下一个————超出末端迭代器,起哨兵作用
	for(vector<int>::iterator iter = begin; iter != end; iter++)
	{
		*iter = 0;
		cout<<*iter<<endl;
	}
        1. const_iterator, 只能读取容器内的元素,不能改变其值

当对const_iterator 类型解引用时,得到的是指向const对象的引用。

	for(vector<int>::const_iterator citer = v3.begin();citer!=v3.end();citer++)
	{
		cout<<"——"<<*citer;
	}
适用const_iterator 类型时, 他自身的值可以改变,但不能用来改变它所指向的元素的值。

     const_iterator 对象与const 的iterator对象:

     声明const 迭代器时,如同其他类型的const对象,必须初始化,一旦初始化后,其值就不能改变了。

	const vector<int>::iterator ci = v3.begin();
	ci++;  //错误,不可改变const 对象
const_iteraor可用于 const vector 和 非const vector ,const 迭代器几乎没什么用。

       2. 迭代器的算数操作

    (1). iter+/-n加上或减去的值的类型应该是:vector的size_type或difference_type类型。

	vector<int>::difference_type d3 = 3;
	vector<int>::iterator it = v3.begin();
	vector<int>::iterator it_3 = it+d3;
	cout<<endl<<"it_3 = "<<*it_3<<endl;
     (2). iter1-iter2

 结果为类型是difference_type的signed类型的值。表示两个迭代器对象之间的距离,iter1和iter2 必须是指向同一个容器。

定义容器的中间元素

vector<int>::iterator mid = vi.begin()+vi.size()/2;

注:改变容器的长度的操作都会使已存在的迭代器实效。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值