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 버전이에요.