const_iterator与const iterator
来源:互联网 发布:年轻人社交软件 编辑:程序博客网 时间:2024/05/08 05:39
- vector<int> :: const_iterator 表明这个迭代器它自身的值可以更改(可以指向其他的元素),但是不能通过对它解引用来改变它所指向的元素的值。 如果传递过来的是一个const类型的容器,那么只能使用const_iterator来进行遍历
- const vector<int>::iterator 表明这个迭代器本身就是一个const类型的,当声明该类型的迭代器时,必须要同时对它进行初始化,并且一旦被初始化,该迭代器本身的值就不能改变,不过能通过对该类迭代器进行解引用来改变它所指向的元素的值。
EX:
vector<int> ive;vector<int>::const_iterator iter1 = ive.begin();const vector<int>::iterator iter2 = ive.begin();iter1 = iter1 + 1; // OKiter2 = iter2 + 1; //Error*iter1 = 10; //Error*iter2 = 0; //OK
const_iterator可以用于const或者是非const容器,但是都不能通过对该种容器进行解引用来改变所指元素的值。
const iterator只能用于非const容器,只能修改其唯一指向的元素的值。
C++primier上的一个例子解释:
const vector<int> nines(10, 9);
// nines 被定义成常量容器对象,是说它本身是一个常量容器,而不是说它的内容常量对象,里面的内容只是int变量
const vector<int>::iterator cit2 = nines.begin();
// error: cit2是常型迭代器,但是它指向的元素是int的而不是 const int 的,所以它只是迭代器本身不能修改,但能修改它所指的元素(能修改它唯一指向的元素),但是 nines 是一个 const 类型的容器,所以会产生编译错误
vector<int>::const_iterator it = nines.begin();
// ok: 迭代器 it 能修改自身的值,但是不能修改它所指向的元素,所以可以用 const 类型的容器 nines 来初始化该值
*it = 10;
// error: 它不能修改它所指向的元素的值,仅能修改本身的指向
++it;
// OK: 能修改自己的指向,通过自加指向原先的下一存储单元
0 0
- const_iterator 与 const iterator
- const iterator与const_iterator
- const iterator与const_iterator
- const_iterator与const iterator
- iterator, const_iterator 与 const iterator
- const_iterator与const iterator区别
- iterator与const_iterator及const iterator区别
- iterator与const_iterator及const iterator区别
- iterator与const_iterator及const iterator区别
- iterator与const_iterator及const iterator区别
- iterator与const_iterator及const iterator区别
- iterator与const_iterator及const iterator区别
- iterator与const_iterator及const iterator区别
- iterator与const_iterator及const iterator区别
- iterator与const_iterator及const iterator区别
- iterator与const_iterator及const iterator区别
- iterator与const_iterator及const iterator区别
- const_iterator与const的iterator的区别
- scrollview的双列同步滚动问题
- Linux多文件按行拼接整合命令paste
- bzoj 最长公共子序列
- jquery checkbox操作
- Cookie登录
- const_iterator与const iterator
- java之 多态-扩展性、多态子父类的类型转换、equals方法
- 最大子序列、最长递增子序列、最长公共子串、最长公共子序列、字符串编辑距离
- 局域网中的限制与突破方法
- JAVA – 虚函数、抽象函数、抽象类、接口
- Ubuntu设置局域网Windows共享文件Samba
- 第一周作业——求两个数的最大公约数
- 虚拟机中安装VMTools
- linux man 命令查询系统函数