ranges::merge
ranges::merge (두 정렬 범위 병합 — ranges)
두 정렬된 범위를 병합해 정렬된 출력을 만드는 ranges 버전 알고리즘이에요. <algorithm> 헤더에 있어요.
출처: cppreference
본문
std::ranges::merge는 정렬된 [first1, last1)과 [first2, last2)를 병합해 정렬된 결과를 result에 써요.
namespace std::ranges {
template< std::input_iterator I1, std::sentinel_for<I1> S1,
std::input_iterator I2, std::sentinel_for<I2> S2,
std::weakly_incrementable O, class Comp = ranges::less,
class Proj1 = std::identity, class Proj2 = std::identity >
requires std::mergeable<I1, I2, O, Comp, Proj1, Proj2>
constexpr merge_result<I1, I2, O>
merge( I1 first1, S1 last1, I2 first2, S2 last2, O result,
Comp comp = {}, Proj1 proj1 = {}, Proj2 proj2 = {} );
}
- 반환 값:
merge_result{in1, in2, out}. - 복잡도:
N1 + N2번의 비교.
std::vector<int> a{1, 3, 5}, b{2, 4, 6};
std::vector<int> out(6);
std::ranges::merge(a, b, out.begin());
// out == {1,2,3,4,5,6}
이미 정렬된 두 시퀀스를 합쳐 정렬을 유지하는 ranges 버전이에요.