C++ 具名要求: LegacyBidirectionalIterator

来自cppreference.com
< cpp‎ | named req
 
 
 

LegacyBidirectionalIterator 是能双向移动(即自增与自减)的 LegacyForwardIterator

目录

[编辑] 要求

类型 It 满足 LegacyBidirectionalIterator ,若

且给定

  • ab ,类型 It 的迭代器
  • referencestd::iterator_traits<It>::reference 所指代的类型

则下列表达式必须合法并拥有其效应

表达式 返回 等价表达式 注意
--a It& 前提条件:
  • a 可自减(存在满足 a == ++bb

后置条件:

  • a 可解引用
  • --(++a) == a
  • --a == --ba == b
  • a--a 指代同一迭代器对象
a-- 可转换到 const It& It temp = a;

--a;

return temp;
*a-- reference

可变双向迭代器 (mutable LegacyBidirectionalIterator) 是额外满足 LegacyOutputIterator 要求的 LegacyBidirectionalIterator

[编辑] 注意

起始迭代器不可自减。且若求值 --container.begin() 则行为未定义。

双向迭代器不必可解引用、可自减(尤其是尾迭代器不可解引用但可自减)。

概念

为定义 std::iterator_traits ,定义以下仅为说明的概念:

template<class I>

concept __LegacyBidirectionalIterator =
  __LegacyForwardIterator<I> && requires(I i) {
    {  --i } -> std::Same<I&>;
    {  i-- } -> const I&;
    { *i-- } -> std::Same<std::iter_reference_t<I>>;

  };

其中仅为说明的概念 __LegacyForwardIterator 描述于 LegacyForwardIterator#概念

(C++20 起)

[编辑] 参阅

指定向前迭代器 (ForwardIterator) 为双向迭代器,支持向后移动
(概念) [编辑]