@specsoftdev live:.cid.8e17e9b93cabb607 specsoftdev@gmail.com
std::lexicographical_compare
Актуально для C++23.

#include <algorithm>
Актуально на 2024-03-23.



Define overload #1
template<class InputIterator1, class InputIterator2>
constexpr bool
lexicographical_compare(InputIterator1 first1, InputIterator1 last1,
                        InputIterator2 first2, InputIterator2 last2);

Сравнивает диапазон [first1, last1] с [first2, last2] лексикографически.
Эквивалентность проверяется с помощью оператора "<".
Вернёт "true" если [first1, last1] меньше [first2, last2], иначе - "false".
Example, possible implementation
Define overload #2
template<class InputIterator1, class InputIterator2, class Compare>
constexpr bool
lexicographical_compare(InputIterator1 first1, InputIterator1 last1,
                        InputIterator2 first2, InputIterator2 last2,
                        Compare comp);

Сравнивает диапазон [first1, last1] с [first2, last2] лексикографически.
Эквивалентность проверяется с помощью бинарного предиката "comp".
Вернёт "true" если [first1, last1] меньше [first2, last2], иначе - "false".
Example, possible implementation
Define overload #3
template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2>
bool
lexicographical_compare(ExecutionPolicy&& exec, ForwardIterator1 first1,
                        ForwardIterator1 last1, ForwardIterator2 first2,
                        ForwardIterator2 last2);

TODO
Example, possible implementation
Define overload #4
template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2>
bool
lexicographical_compare(ExecutionPolicy&& exec, ForwardIterator1 first1,
                        ForwardIterator1 last1, ForwardIterator2 first2,
                        ForwardIterator2 last2);

TODO
Example, possible implementation
Define overload #5
template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2,
class Compare>
bool
lexicographical_compare(ExecutionPolicy&& exec,ForwardIterator1 first1,
                        ForwardIterator1 last1, ForwardIterator2 first2,
                        ForwardIterator2 last2, Compare comp);

TODO
Example, possible implementation


Examples


Example 1:
#include <iostream>
#include <algorithm>
#include <vector>

int main()
{
    std::vector<int> v1 {1,2,3,4};
    std::vector<int> v2 {1,2,3,4,5};
    auto res = std::lexicographical_compare(
                std::begin(v1), std::end(v1),
                std::begin(v2), std::end(v2)
    );
    std::cout << std::boolalpha << res << std::endl;
    return 0;
}


true



Changelog

C++26
TODO
C++23
TODO
C++20
TODO
C++17
TODO
C++14
TODO
C++11
TODO


See also

TODO

This page was last modified on 2024-03-23