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_compare가 bool(작은지 여부)만 주는 반면, 이 함수는 "작다/같다/크다" 세 방향을 한 번에 알아내요. 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