【问题标题】: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&amp;

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

    最好的类比是const_iteratoriteratorconst T*T*。而你在你的函数中拥有的类似于T * const


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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多