[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_iterator不允许你修改它指向的元素,这在const类方法中很有用。 它也可以让你表达你的意图。




Related