[英]In C++, is "const_iterator" the same as "const iterator"?
const_iterator
是否与const iterator
相同? 如果不是有什么区别? 如果是,为什么标准在const iterator
已经有意义时使用const_iterator
?
例如,这两个声明是否完全相同?
string& replace (const_iterator i1, const_iterator i2, const string& str);
string& replace (const iterator i1, const iterator i2, const string& str);
不,它们不一样。
一个const
iterator
,你不能改变:
// ++it gives error below since we try to change it:
for(const std::vector<int>::iterator it = vec.begin(); it != vec.end(); ++it) {}
但是,您可以更改const
iterator
指向的内容:
// this is ok (assuming there is at least one element in the vector):
const std::vector<int>::iterator it = vec.begin();
*it = 10;
const_iterator
是可变的,但您不能更改迭代器指向的 object:
// ++it is ok below:
for(std::vector<int>::const_iterator it = vec.begin(); it != vec.end(); ++it) {
*it = 10; // error: `*it` is an `int const&`
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.