lexicographical_compare_three_way

lexicographical_compare_three_way (사전식 three-way 비교)

두 범위를 사전식으로 비교해 std::strong_ordering(세 방향 결과)을 반환하는 알고리즘이에요. <algorithm> 헤더, C++20부터.

출처: cppreference

본문

lexicographical_compare_three_way는 두 범위를 사전식으로 비교해 결괏값을 세 방향 비교로 돌려줘요.

template< class InputIt1, class InputIt2, class Compare >
auto lexicographical_compare_three_way( InputIt1 first1, InputIt1 last1,
                                        InputIt2 first2, InputIt2 last2,
                                        Compare comp );

비교기를 생략하는 기본 버전도 있어요.

template< class InputIt1, class InputIt2 >
auto lexicographical_compare_three_way( InputIt1 first1, InputIt1 last1,
                                        InputIt2 first2, InputIt2 last2 );

반환 타입은 std::strong_ordering 계열이에요(less/equal/greater). 첫 번째로 달라지는 원소의 비교 결과를 돌려주고, 한쪽이 접두사면 짧은 쪽이 작은 것으로, 완전히 같으면 equal을 돌려줘요.

lexicographical_comparebool(작은지 여부)만 주는 반면, 이 함수는 "작다/같다/크다" 세 방향을 한 번에 알아내요. C++20의 <=> 기반 비교와 잘 어울리고, 정렬·비교기 구현에 유용해요.

std::vector<int> a{1, 2, 3};
std::vector<int> b{1, 2, 4};
auto r = std::lexicographical_compare_three_way(a.begin(), a.end(),
                                                b.begin(), b.end()); // less

더 알아보기 (Learn more)

cppreference