【问题标题】:const vector of iterators in c++C++中迭代器的常量向量
【发布时间】:2017-06-26 10:21:13
【问题描述】:
如果我有一个包含另一个向量的迭代器的向量。
例如:
vector<vector<int>::iterator> vec;
在常量引用中传递这个向量时会发生什么?
例如:
void fun(const vector<vector<int>::iterator> &vec);
函数fun中的vec元素是const_iterator还是iterator?可以修改吗
提前致谢!
【问题讨论】:
标签:
c++
vector
iterator
constants
const-iterator
【解决方案1】:
不,他们不是const_iterator。主要是因为const_iterator 是一个用户定义的类型,它通过用户定义的转换与iterator 相关,而实际上不是一个const 限定的iterator。 (1)
你通过向量在函数内部访问的是const iterator&。
因此您可以使用它们来修改它们所引用的元素。
最好的类比是const_iterator 是iterator,const T* 是T*。而你在你的函数中拥有的类似于T * const。
(1) 在纸上,也就是说。对于向量,它很可能是优化代码中的普通指针。在这种情况下,类比成为现实。