lexicographical_compare

lexicographical_compare (사전식 비교)

두 범위를 사전식(lexicographical)으로 비교해 어느 쪽이 작은지 반환하는 알고리즘이에요. <algorithm> 헤더에 있어요.

출처: cppreference

본문

lexicographical_compare[first1, last1)[first2, last2)를 사전 순서로 비교해요.

template< class InputIt1, class InputIt2 >
bool lexicographical_compare( InputIt1 first1, InputIt1 last1,
                              InputIt2 first2, InputIt2 last2 );   // (1)

비교기 버전도 있어요.

template< class InputIt1, class InputIt2, class Compare >
bool lexicographical_compare( InputIt1 first1, InputIt1 last1,
                              InputIt2 first2, InputIt2 last2,
                              Compare comp );   // (2)
    1. operator<로, 2) comp로 비교해요.
  • 반환 값: 첫 범위가 두 번째 범위보다 사전식으로 작으면 true.

규칙을 정리하면:

  • 첫 번째로 달라지는 원소에서 작은 쪽이 승리해요.
  • 한 범위가 다른 범위의 접두사면, 더 짧은 쪽이 작아요.
  • 완전히 같으면(같은 길이·같은 내용) false를 반환해요.
std::string a = "apple";
std::string b = "apples";
bool less = std::lexicographical_compare(a.begin(), a.end(), b.begin(), b.end()); // true

사전의 "가나다순 정렬"을 임의 컨테이너에 일반화한 함수예요. 문자열 비교를 넘어 숫자·문자 벡터의 사전식 순서가 필요할 때 써요.

더 알아보기 (Learn more)

cppreference