ranges::inplace_merge

ranges::inplace_merge (제자리 병합)

같은 범위 안의 두 정렬 구간을 제자리에서 병합하는 ranges 버전 알고리즘이에요. <algorithm> 헤더에 있어요.

출처: cppreference

본문

std::ranges::inplace_merge는 정렬된 [first, middle)[middle, last)을 하나의 정렬된 범위로 제자리 병합해요.

namespace std::ranges {
template< std::bidirectional_iterator I, std::sentinel_for<I> S,
          class Comp = ranges::less, class Proj = std::identity >
requires std::sortable<I, Comp, Proj>
constexpr I inplace_merge( I first, I middle, S last, Comp comp = {}, Proj proj = {} );
}
  • comp(기본 less)로 비교해요.
  • 반환 값: 병합된 범위의 끝.

복잡도는 추가 메모리가 있으면 선형, 없으면 N·log₂N번의 비교가 필요할 수 있어요.

std::vector<int> v{1, 3, 5, 2, 4, 6};
std::ranges::inplace_merge(v, v.begin() + 3);
// v == {1,2,3,4,5,6}

병합 정렬의 합병 단계를 제자리에서 수행하는 ranges 버전이에요.

더 알아보기 (Learn more)

cppreference