c ++中迭代器的const向量

时间:2017-06-26 10:21:13

标签: c++ vector iterator const const-iterator

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

例如:

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

在const引用中传递此向量会发生什么?

例如:

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

vec里面的元素是否有趣的const_iterator或迭代器?他们可以被修改

提前致谢!

1 个答案:

答案 0 :(得分:7)

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

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

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

最好的比喻是const_iteratoriteratorconst T*T*。你在函数中的内容类似于T * const

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