Skip to content

Latest commit

 

History

History
73 lines (57 loc) · 1.78 KB

op_compare_3way.md

File metadata and controls

73 lines (57 loc) · 1.78 KB

operator<=>

  • iterator[meta header]
  • std[meta namespace]
  • function template[meta id-type]
  • cpp20[meta cpp]
namespace std {
  template <class Iterator1, three_way_comparable_with<Iterator1> Iterator2>
  constexpr compare_three_way_result_t<Iterator1, Iterator2>
    operator<=>(const reverse_iterator<Iterator1>& x,
                const reverse_iterator<Iterator2>& y); // (1) C++20
}

概要

reverse_iteratorオブジェクトの三方比較を行う。

戻り値

return y.base() <=> x.base();
  • base()[link base.md]

備考

  • 逆順イテレータであるため、return文の引数順が逆になっている

#include <iostream>
#include <vector>
#include <iterator>

int main()
{
  std::vector<int> v = {1, 2, 3};

  std::reverse_iterator<decltype(v)::iterator> it1(v.end());
  std::reverse_iterator<decltype(v)::iterator> it2(v.end());

  if ((it1 <=> it2) == 0) {
    std::cout << "equal" << std::endl;
  }
  else {
    std::cout << "not equal" << std::endl;
  }
}
  • it1 <=> it2[color ff0000]

出力

equal

バージョン

言語

  • C++20

処理系

参照