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_iterator
是 iterator
,const T*
是 T*
。你的函数内部的内容类似于 T * const
.
(1) 纸上谈兵。对于向量,它很可能是优化代码中的普通指针。在这种情况下类比成为现实。
如果我有一个包含另一个向量的迭代器的向量。
例如:
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_iterator
是 iterator
,const T*
是 T*
。你的函数内部的内容类似于 T * const
.
(1) 纸上谈兵。对于向量,它很可能是优化代码中的普通指针。在这种情况下类比成为现实。