c++ - 传递 `const` 作为参数时是否需要写 `const_iterator` 关键字?

标签 c++ stl iterator arguments constants

static void MyClassMethod(
          std::list<AClass>                 & AnObject,
    const std::list<AClass>::const_iterator & BeginningPoint);

在我的代码中,我传递了 const STL 对象的 const_iterator。感觉其中一个常数是多余的。

如果我只删除 const 关键字,或者如果我只将 const_iterator 更改为 iterator,这有什么不同?

最佳答案

const_iterator 意味着您不能修改它“指向”的对象(迭代器具有指针语义)。 const const_iterator 意味着您不能修改迭代器本身。

所以:

 const std::list<AClass>::const_iterator it = smth;
 it = smthElse;

是非法的,并且

 std::list<AClass>::const_iterator it = smth;
 it->nonConstMethodOfAClass();

是非法的。

关于c++ - 传递 `const` 作为参数时是否需要写 `const_iterator` 关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18107843/

相关文章:

c++ - 将函数指针传递给函数时处理 <unresolved overloaded function type>

c++ - 虚继承和基类的基类

时间:2018-02-08 标签:c++cin>>byte strangebehavior

c++ - C++ 中的 vector 迭代器

c++ - 在 C++ 中将惰性生成器实现为 forward_iterator

c++ - 使用 reverse_iterator 而不是 const_reverse_iterator 并得到讨厌的编译器警告和错误

c++ - 使用流C++阅读换行符

c++ - 用 C++ 解析巨大的 csv 文件

c++ - 更喜欢 unordered_set 而不是 vector

c++ - QGraphicsScene 中元素的迭代器