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