@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



See also

TODO

This page was last modified on 2024-03-23