设为首页 加入收藏

TOP

CONST迭代器 _ITERATOR区别
2013-02-08 14:33:27 来源: 作者: 【 】 浏览:577
Tags:CONST   _ITERATOR 区别

  话说这两个区别非常大,但是不太好理解啊,而且感觉解释也是各种绕口。说一下我自己的理解吧。

  const迭代器,顾名思义,就是不能改变的迭代器,是常量,其性质是由const决定的。比如说我们这样定义一个const迭代器。

  vector<int> vv(10,9);

  const vector<int> :: iterator iter = vv.begin();

  则,当程序中出现这样的语句时是错误的

  ++iter;

  其原因是iter是一个常量,因此是不能改变的。换句话说,iter只能指向vv的地一个元素,不能指向其他的元素。

  但是这样的语句是正确的:

  ×iter = 10;

  因为虽然iter不能指向其他的元素,但是其指向的第一个元素的值是可以改变的。

  而对于const_iterator来说的话,正好相反。比如我们这样定义

  vector<int> vv(10,9);

  vector<int> :: const_iterator iter;

  即定义了一个const_iterator迭代器。这个迭代器是可以自己增加的,但是其所指向的元素是不可以被改变的。比如说

  for(iter = vv.begin(); iter != vv.end(); ++iter){

  cout 《 *iter 《 endl;

  }

  这样是正确的,即iter本身的值是可以改变的。但是

  for(iter = vv.begin(); iter != vv.end(); ++ iter){

  *iter = 0;

  }

  这样是不对的,因为const_iterator迭代器是不能改变其所指向的元素的值的。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++函数调用栈空间结构探究 下一篇C++ 协程与网络编程

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: