const 指针与迭代器

const 相关

  正常的指针是很好记的:

  1. const* 前边,表示 *p 不能变;
  2. cosnt* 后边,表示 p 不能变;
  3. 前后都有 const 表示 *pp 都不能变。

  但是 STL vector 的 iteratorconst_iterator 是不一样的:

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

int main() {
	vector<int> v{0};
	const vector<int>::iterator ite1 = v.begin();
	*ite1 = 10;
//  ++ite1;		// Error

	vector<int>::iterator const ite2 = v.begin();	// 和上边一样
	*ite2 = 10;
//  ++ite2;		// Error

	vector<int>::const_iterator ite3 = v.begin();
//	*ite3 = 10;	// Error
    ++ite3;


	const int *p1 = new int(5);
//	*p1 = 10;	// Error
	++p1;

	int * const p2 = new int(5);		// 和上边不一样!!
	*p2 = 10;
//	++p2;		// Error

	const int * const p3 = new int(5);
//	*p3 = 10;	// Error
//	++p3;		// Error
}

  可以参考const auto的使用,也是同样的:https://blog.csdn.net/Bob__yuan/article/details/99673410

指针与迭代器的区别

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值