带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类型,这两个的含义都是“能读取但不能修改所指的值”么?
另外如果有是常量的迭代器的话,需要怎么声明? 展开
另外就是下面的两个类型:
const vector<int> cv;
auto it1=cv.begin();
vector<int> v;
auto it3=v.cbegin();
这里书上写的是it1与it3都是vector<int>::const_iterator类型,这两个的含义都是“能读取但不能修改所指的值”么?
另外如果有是常量的迭代器的话,需要怎么声明? 展开
展开全部
我觉得纠结于“常量指针”/“指针常量”的人都很奇怪,本来不难理解的东西硬要弄成绕口令,结果反而难以理解了。
这种看起来像专有名词的东西不必纠结,除非能找到英文原文 / 规范化的无歧义的术语定义,否则跳过就好
这种看起来像专有名词的东西不必纠结,除非能找到英文原文 / 规范化的无歧义的术语定义,否则跳过就好
追问
因为前后描述矛盾。。。如果他不说和常量指针类似就没疑问了
另外问题答案是“迭代器指向的对象是常量”而不是“迭代器本身是常量”么?
追答
从这个迭代器来看,指向的对象是常量,当然不意味着相应的对象不能用其他方式修改。
同样的道理,“指向常量的指针” 是不准确的说法。
有些译者遇到这种情况就干脆不翻译术语,我想这样的做法可以尽量减少迷惑……
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询