我对 const_iterators 有点困惑。例如,让我们考虑一下函数:
void functionForConstIterator(std::list<int> const& list, std::list<int>::const_iterator& const_iter)
{
const_iter = list.begin();
}
现在我可以写:
void main()
{
std::list<int> myList = {1, 2, 3, 4, 5};
std::list<int> const& listRef = myList;
std::list<int>::iterator iter;
functionForConstIterator(listRef, iter);
*iter = 7;
for (auto it = myList.begin(); it != myList.end(); ++it)
std::cout << *it << " ";
}
输出为 {7, 2, 3, 4, 5}。为什么?如果我在容器上获得 const 引用,我不必更改它。这是 Visual Studio 2015 编译器。