| Iterator concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Iterator primitives | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Algorithm concepts and utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Indirect callable concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Common algorithm requirements | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Iterator adaptors | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Non-member functions | ||||
operator==operator!=operator<operator<=operator>operator>=operator<=> (until C++20)(C++20) | ||||
(C++20) | ||||
(C++20) | ||||
(C++20) | ||||
(C++20) | ||||
(C++11) |
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 oflhs andrhs.
1) This overload participates in overload resolution only iflhs.base()== rhs.base() is well-formed and convertible tobool. 3-6) These overloads participate in overload resolution only iflhs.base()< rhs.base() is well-formed and convertible tobool. The | (since C++20) |
Contents |
| lhs, rhs | - | iterator adaptors to compare |
#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);}
| compares the underlying iterator and the underlying sentinel (function template)[edit] |