std::lexicographical_compare_3way (3) - Linux Manuals

std::lexicographical_compare_3way: std::lexicographical_compare_3way

NAME

std::lexicographical_compare_3way - std::lexicographical_compare_3way

Synopsis


Defined in header <algorithm>
template< class InputIt1, class InputIt2, class Cmp >
constexpr auto lexicographical_compare_3way( InputIt1 first1, InputIt1 last1,
InputIt2 first2, InputIt2 last2, (1) (since C++20)
Cmp comp)
-> std::common_comparison_category_t<decltype(comp(*first1, *first2)), std::strong_ordering>;
template< class InputIt1, class InputIt2 >
constexpr auto lexicographical_compare_3way( InputIt1 first1, InputIt1 last1, (2) (since C++20)
InputIt2 first2, InputIt2 last2);


Lexicographically compares two ranges [first1, last1) and [first2, last2) using three-way comparison and produces a result of the strongest applicable comparison category type.
1) Behaves as if defined as follows:


  for ( ; first1 != last1 && first2 != last2; void(++first1), void(++first2) )
    if (auto cmp = comp(*first1,*first2); cmp != 0)
      return cmp;
    return first1 != last1 ? std::strong_ordering::greater :
           first2 != last2 ? std::strong_ordering::less :
                      std::strong_ordering::equal;


2) Behaves as if defined as follows:


  return std::lexicographical_compare_3way(first1, last1, first2, last2,
             [](const auto& t, const auto& u) {
                 return std::compare_3way(t, u);
             });

Parameters


first1, last1 - the first range of elements to examine
first2, last2 - the second range of elements to examine
comp - a function object type. The behavior is undefined if its return type is not one of the five comparison category types (strong_equality, weak_equality, strong_ordering, weak_ordering, or partial_ordering)

Type requirements


-
InputIt1, InputIt2 must meet the requirements of LegacyInputIterator.

Return value


A comparison category type as defined above.

Example


 This section is incomplete
 Reason: no example

See also


compare_3way compares two values using three-way comparison
             (function template)
(C++20)