C ++中迭代器的const向量

const vector of iterators in c++

如果我有一个包含另一个向量的迭代器的向量。

例如:

vector<vector<int>::iterator> vec;

在常量引用中传递这个向量时会发生什么?

例如:

void fun(const vector<vector<int>::iterator> &vec);

函数中的 vec 元素是 fun const_iterator 还是迭代器?可以修改吗

提前致谢!

不,他们不是 const_iterator。主要是因为 const_iterator 是一个用户定义的类型,它通过用户定义的转换与 iterator 相关,实际上不是一个限定的常量 iterator(1)

你在函数内部通过vector访问的是const iterator&.

因此您可以使用它们来修改它们引用的元素。

最好的类比是 const_iteratoriteratorconst T*T*。你的函数内部的内容类似于 T * const.


(1) 纸上谈兵。对于向量,它很可能是优化代码中的普通指针。在这种情况下类比成为现实。