繁体   English   中英

在 C++ 中,“const_iterator”是否与“const iterator”相同?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM