If I have a vector that contains iterators of another vector.
For example :
vector<vector<int>::iterator> vec;
what happens when passing this vector in const refrence?
For example:
void fun(const vector<vector<int>::iterator> &vec);
Are the elements of vec inside function fun const_iterator or iterator? can they be modified
Thanks in advance!
No, they aren't const_iterator
. Chiefly because const_iterator
is a user defined type that is related to iterator
via a user defined conversion, and not in fact a const qualified iterator
. (1)
What you access inside the function through the vector are const iterator&
.
So you can use those to modify the elements referred by them.
The best analogy to this is that const_iterator
is to iterator
, what const T*
is to T*
. And what you have inside your function is akin to T * const
.
(1) On paper, that is. For vectors it may very well be plain pointers in optimized code. In which case the analogy becomes the reality.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.