is_sorted_until

is_sorted_until (정렬이 깨지는 지점 찾기)

범위의 시작부터 정렬된 가장 긴 접두 구간의 끝을 찾는 알고리즘이에요. <algorithm> 헤더에 있어요.

출처: cppreference

본문

is_sorted_until[first, last)에서 정렬 순서를 유지하는 가장 긴 접두 구간 [first, it)의 끝 it를 반환해요.

template< class ForwardIt >
ForwardIt is_sorted_until( ForwardIt first, ForwardIt last );   // (1)

비교기 버전도 있어요.

template< class ForwardIt, class Compare >
ForwardIt is_sorted_until( ForwardIt first, ForwardIt last, Compare comp );   // (2)

it는 정렬 상한이 깨지는 첫 요소를 가리켜요. 범위 전체가 정렬돼 있으면 last를 반환해요.

std::vector<int> v{1, 2, 3, 5, 4, 6};
auto it = std::is_sorted_until(v.begin(), v.end());
// it는 4를 가리킴 (1,2,3,5까지만 정렬)

"어디까지 정렬돼 있는지"를 알려줘서, 정렬 전제를 재검증하거나 부분 정렬이 필요한 위치를 찾을 때 유용해요.

더 알아보기 (Learn more)

cppreference