c ++中迭代器的const向量

Ida*_*dan 1 c++ iterator const vector const-iterator

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

例如 :

vector<vector<int>::iterator> vec;
Run Code Online (Sandbox Code Playgroud)

在const refrence中传递这个向量会发生什么?

例如:

void fun(const vector<vector<int>::iterator> &vec);
Run Code Online (Sandbox Code Playgroud)

函数内部的vec元素是有趣的const_iterator还是迭代器?可以修改它们吗?

提前致谢!

Sto*_*ica 7

不,他们不是const_iterator.主要是因为const_iterator用户定义的类型与iterator用户定义的转换相关,而实际上并不是const限定的iterator.(1)

您通过向量访问函数内部的内容是const iterator&.

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

到这一点,最好的比喻是,const_iteratoriterator,是什么const T*T*.而你的功能中的内容类似于T * const.


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