带const的迭代器到底是本身是常量还是指向的对象是常量?

C++Primer第五版上写的是“const_iterator和常量指针差不多,能读取但不能修改它所指的值”。但前面描述的常量指针应该是“指向的对象不能再更改(类型*co... C++ Primer第五版上写的是“const_iterator和常量指针差不多,能读取但不能修改它所指的值”。但前面描述的常量指针应该是“指向的对象不能再更改(类型 *const 声明符)”,“能读取但不能修改所指的值”应该是“指向常量的指针(const 类型 *声明符)”吧?感觉是翻译错误?

另外就是下面的两个类型:
const vector<int> cv;
auto it1=cv.begin();

vector<int> v;
auto it3=v.cbegin();
这里书上写的是it1与it3都是vector<int>::const_iterator类型,这两个的含义都是“能读取但不能修改所指的值”么?
另外如果有是常量的迭代器的话,需要怎么声明?
展开
 我来答
zjfaok
2014-08-26 · TA获得超过6806个赞
知道大有可为答主
回答量:4146
采纳率:62%
帮助的人:1616万
展开全部
我觉得纠结于“常量指针”/“指针常量”的人都很奇怪,本来不难理解的东西硬要弄成绕口令,结果反而难以理解了。

这种看起来像专有名词的东西不必纠结,除非能找到英文原文 / 规范化的无歧义的术语定义,否则跳过就好
追问
因为前后描述矛盾。。。如果他不说和常量指针类似就没疑问了

另外问题答案是“迭代器指向的对象是常量”而不是“迭代器本身是常量”么?
追答
从这个迭代器来看,指向的对象是常量,当然不意味着相应的对象不能用其他方式修改。
同样的道理,“指向常量的指针” 是不准确的说法。
有些译者遇到这种情况就干脆不翻译术语,我想这样的做法可以尽量减少迷惑……
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式