如果我有一个包含另一个向量的迭代器的向量。
例如:
vector<vector<int>::iterator> vec;
在const引用中传递此向量会发生什么?
例如:
void fun(const vector<vector<int>::iterator> &vec);
vec里面的元素是否有趣的const_iterator或迭代器?他们可以被修改
提前致谢!
答案 0 :(得分:7)
不,他们不是const_iterator
。主要是因为const_iterator
是用户定义的类型,它通过用户定义的转换与iterator
相关,而实际上不是const限定的iterator
。 (1)
通过向量访问函数内部的内容是const iterator&
。
因此,您可以使用它们来修改它们引用的元素。
最好的比喻是const_iterator
是iterator
,const T*
是T*
。你在函数中的内容类似于T * const
。
(1)在纸面上,就是这样。对于向量,它可能是优化代码中的普通指针。在这种情况下,类比成为现实。