Vector中的c++常量迭代器
C++ const iterator in Vector
我是一个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。这足以在重载中区分它们。
相关文章:
- 是否应避免从非常量迭代器转换为常量迭代器?
- 如何实现常量迭代器?
- 使用迭代器替换映射中的常量项的方法
- boost_multi_index迭代器取消引用给出常量
- 是否可以重用通常的迭代器来构建常量迭代器?
- 使用 declval 获取非常量迭代器
- 为什么在此代码中隐式转换为常量迭代器失败?
- const_iterator<T>和迭代器<常量T>有什么区别?
- 常量迭代器的问题
- 链表常量迭代器
- 输入迭代器必须具有常量解引用运算符吗
- 属性树常量迭代器的索引
- 递增常量前向迭代器
- C++中非常量列表迭代器的奇怪行为
- 如何正确地声明从非常量迭代器到指针的常量指针
- 列表的迭代器可以返回非常量引用吗?
- 无法取消引用映射常量迭代器的mapped_type
- 强制 foreach 使用常量迭代器
- 为什么这个迭代器常量
- std::设置迭代器常量限定符