簡體   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