Defined in header <algorithm> | ||
---|---|---|
template< class InputIt1, class InputIt2, class Cmp > constexpr auto lexicographical_compare_3way( InputIt1 b1, InputIt1 e1, InputIt2 b2, InputIt2 e2, Cmp comp) -> std::common_comparison_category_t<decltype(comp(*b1, *b2)), std::strong_ordering>; | (1) | (since C++20) |
template< class InputIt1, class InputIt2 > constexpr auto lexicographical_compare_3way( InputIt1 b1, InputIt1 e1, InputIt2 b2, InputIt2 e2); | (2) | (since C++20) |
Lexicographically compares two ranges [first1, last1)
and [first2, last2)
using three-way comparison and produces a result of the strongest applicable comparison category type.
for ( ; b1 != e1 && b2 != e2; void(++b1), void(++b2) ) if (auto cmp = comp(*b1,*b2); cmp != 0) return cmp; return b1 != e1 ? std::strong_ordering::greater : b2 != e2 ? std::strong_ordering::less : std::strong_ordering::equal;
return std::lexicographical_compare_3way(b1, e1, b2, e2, [](const auto& t, const auto& u) { return std::compare_3way(t, u); });
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 InputIterator. |
A comparison category type as defined above.
(C++20) | compares two values using three-way comparison (function template) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/cpp/algorithm/lexicographical_compare_3way