[C++] C ++ STL中的const_iterator和非const迭代器有什麼區別?


Answers

他們應該幾乎不言自明。 如果迭代器指向T類型的元素,則const_iterator指向'const T'類型的元素。

它基本上等同於指針類型:

T* // A non-const iterator to a non-const element. Corresponds to std::vector<T>::iterator
T* const // A const iterator to a non-const element. Corresponds to const std::vector<T>::iterator
const T* // A non-const iterator to a const element. Corresponds to std::vector<T>::const_iterator

const迭代器總是指向相同的元素,所以迭代器本身是const。 但是它指向的元素不一定是const,所以它指向的元素可以改變。 const_iterator是一個指向const元素的迭代器,因此當迭代器本身可以更新時(例如遞增或遞減),它指向的元素不能被更改。

Question

const_iteratoriterator之間有什麼區別,你會在哪裡使用另一個?




(正如其他人所說的)const_iterator不允許你修改它指向的元素,這在const類方法中很有用。 它也可以讓你表達你的意圖。




盡可能使用const_iterator ,當你沒有其他選擇時使用迭代器