operator==,!=,<,<=,>,>=,<=>(std::move_iterator)
From cppreference.com
< cpp | iterator | move iterator
Defined in header <iterator> | ||
template<class Iter1, class Iter2 > bool operator==(conststd::move_iterator<Iter1>& lhs, | (1) | (constexpr since C++17) |
template<class Iter1, class Iter2 > bool operator!=(conststd::move_iterator<Iter1>& lhs, | (2) | (constexpr since C++17) (until C++20) |
template<class Iter1, class Iter2 > bool operator<(conststd::move_iterator<Iter1>& lhs, | (3) | (constexpr since C++17) |
template<class Iter1, class Iter2 > bool operator<=(conststd::move_iterator<Iter1>& lhs, | (4) | (constexpr since C++17) |
template<class Iter1, class Iter2 > bool operator>(conststd::move_iterator<Iter1>& lhs, | (5) | (constexpr since C++17) |
template<class Iter1, class Iter2 > bool operator>=(conststd::move_iterator<Iter1>& lhs, | (6) | (constexpr since C++17) |
template<class Iter1, std::three_way_comparable_with<Iter1> Iter2 > constexprstd::compare_three_way_result_t<Iter1, Iter2> | (7) | (since C++20) |
Compares the underlying iterators of lhs and rhs.
1) This overload participates in overload resolution only if lhs.base()== rhs.base() is well-formed and convertible to bool. 3-6) These overloads participate in overload resolution only if lhs.base()< rhs.base() is well-formed and convertible to bool. The | (since C++20) |
Contents |
[edit]Parameters
lhs, rhs | - | iterator adaptors to compare |
[edit]Return value
1)lhs.base()== rhs.base()
2)!(lhs == rhs)
3)lhs.base()< rhs.base()
4)!(rhs < lhs)
5)rhs < lhs
6)!(lhs < rhs)
7)lhs.base()<=> rhs.base()
[edit]Example
Run this code
#include <cassert>#include <iterator> int main(){int a[]{9, 8, 7, 6};// │ └───── x, y// └──────── z // “x” and “y” are equal, but “x” is greater than “z”std::move_iterator<int*> x{std::end(a)-1}, y{std::end(a)-1}, z{std::end(a)-2}; // two-way comparisonsassert( x == y );assert(!(x != y));assert(!(x < y));assert( x <= y );assert(!(x == z));assert( x != z );assert(!(x < z));assert(!(x <= z)); // three-way comparisonsassert( x <=> y ==0);assert(!(x <=> y <0));assert(!(x <=> y >0));assert(!(x <=> z ==0));assert(!(x <=> z <0));assert( x <=> z >0);}
[edit]See also
compares the underlying iterator and the underlying sentinel (function template) |