Vector中的c++常量迭代器

C++ const iterator in Vector

本文关键字:迭代器 常量 c++ 中的 Vector      更新时间:2023-10-16

我是一个c++新手。所以,请耐心听我说。我正在研究std::vector类的实现。我发现了以下2种不同的begin()方法实现。我知道第一个返回一个RW迭代器,第二个返回一个只读迭代器。我认为仅仅在返回类型的差异是不够的函数重载。那么这是如何工作的呢?

iterator
begin()
{ return iterator(this->_M_impl._M_start); }
const_iterator
begin() const
{ return const_iterator(this->_M_impl._M_start); }

一个是const,另一个不是。const版本将为const std::vector对象调用,而另一个版本将为非const std::vector对象调用。另请注意,这也适用于const和非const引用和指针。

关于const方法和重载的更多信息:

  • "构造"的含义最后在一个c++方法声明?
  • "常量重载"是怎么回事?

相关:

  • "构造"一词的用法有多少?在c++中?

在第二个方法中隐式形参"this"是const。这足以在重载中区分它们。