LegacyBidirectionalIterator到value_type的常量和LegacyBidirectiona



查找std::set的成员类型iterator的类型时,我期望是指向其value_type const的双向迭代器。然而,根据cppreference.com,它有以下成员类型:

tbody> <<tr>
成员类型 定义
iteratorConstantLegacyBidirectionalIteratorto value_type
const_iteratorLegacyBidirectionalIteratorto const value_type

这些表述在定义上有什么不同?

在我看来,没有什么区别。说明应与其他容器的成员类型描述一致。即iterator指的是xxxIteratorvalue_type,const_iterator指的是xxxIteratorconst value_type(它已经是隐式常数了)。例:[std::map].(https://en.cppreference.com/w/cpp/container/map#Member_types),std::vector

额外的常量std::set::iterator中来自associative.reqmts#general-6

对于值类型与键类型相同的关联容器,iterator和const_iterator都是常量迭代器。iterator和const_iterator是否为同一类型未指定。

既然上面提到了这两种成员类型不一定是相同的,那么对于cppref来说,做出这样的字面上不同的表述是完全可以的(尽管通常是相同的,std::set::begin也提到了)

关于可变迭代器要么是常量,要么是可变的。它只在真正必要的时候使用,所以它并不意味着没有前导可变变量的迭代器是常量。

相关内容

  • 没有找到相关文章

最新更新