最終更新日時:
が更新

履歴 編集

function
<ranges>

std::ranges::filter_view::sentinel::operator==(C++20)

friend constexpr bool operator==(const iterator& x, const sentinel& y);

概要

自身と別のイテレータが同じかを判定する。

効果

ラップしている番兵をend_メンバ変数に保持するとして、以下と等価

return x.current_ == y.end_;

戻り値

元のビューのイテレータと番兵が等しい場合にtrueを返す。

備考

  • この演算子により逆順の == 演算子と、それぞれに対応する != 演算子が使用可能になる。

#include <ranges>
#include <iostream>

int main()
{
  // take_while_viewは非common_rangeなので、filter_viewのend()は番兵を返す
  auto base = std::views::iota(1)
            | std::views::take_while([](int i) { return i <= 10; });
  auto fv = base | std::views::filter([](int i) { return i % 2 == 0; });

  auto it = fv.begin();
  auto se = fv.end();

  // operator==(iterator, sentinel) で終端を判定しながら走査する
  for (; it != se; ++it) {
    std::cout << *it;
  }
  std::cout << std::endl;
}

出力

246810

バージョン

言語

  • C++20

処理系

参照