C++迭代器:const_iterator和const形式的iterator有什么区别?

73 篇文章 32 订阅

        从C语言走过来的猿们, 对指针已经很熟悉了, 也很清楚指向常量的指针和常指针的区别。 在本文中, 我们来学习一下C++中的迭代器, 顺便类比指针来学习一下指向常量的迭代器和常迭代器的区别。

       其实, 迭代器很简单, 你就把它理解为一种类似指针的东西就行了, 毕竟指针的概率是广义的, 你的手指, 大拇指, 小拇指, 那就是个指针。 比如, 完全可以把vector<int>::iterator理解为一个类型, 这个类型是迭代器类型, 就类似于char *这样的东东。 

        好吧, 直接看程序:

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

int main()
{
	vector<int> v(10);
	vector<int>::iterator it;
	for(it = v.begin(); it != v.end(); it++)
	{
		*it = it - v.begin(); // 迭代器的解引用就像指针的解引用一样
	}

	vector<int>::const_iterator cit; // 指向常量的迭代器, cit本身可变, 但*cit不能变
	for(cit = v.begin(); cit != v.end(); cit++)
	{
		cout << *cit << endl;
	}

	for(cit = v.begin(); cit != v.end(); cit++)
	{
		//*cit = 0; // error, const_iterator这种类型的迭代器指向的值是不可以更改的
	}

	vector<int>::iterator const xit; // error, const iterator自身不能改变, 所以必须对xit进行初始化
	const vector<int>::iterator yit; // error, 同上

	return 0;
}



  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值