std::mergeable

std::mergeable (병합 가능 컨셉)

Comp가 부과하는 엄밀 약순서에 따라 두 입력 범위를 하나의 출력 범위로 병합하는 알고리즘에 대한 요구사항을 명세하는 컨셉이에요. C++20부터 있어요.

출처: cppreference

본문

<iterator> 헤더에 정의돼 있어요.

template< class I1, class I2, class Out, class Comp = ranges::less,
          class Proj1 = std::identity, class Proj2 = std::identity >
concept mergeable =
    std::input_iterator<I1> &&
    std::input_iterator<I2> &&
    std::weakly_incrementable<Out> &&
    std::indirectly_copyable<I1, Out> &&
    std::indirectly_copyable<I2, Out> &&
    std::indirect_strict_weak_order<Comp,
                                    std::projected<I1, Proj1>,
                                    std::projected<I2, Proj2>>;

mergeable 컨셉은 Comp가 부과하는 엄밀 약순서에 따라 두 입력 범위를 하나의 출력 범위로 병합하는 알고리즘에 대한 요구사항을 명세해요. 각 입력 범위에 projection을 적용한 값들로 엄밀 약순서를 판정하고, 두 입력을 출력으로 간접 복사할 수 있어야 해요.

의미 요구사항

mergeable은 그것이 포함하는 모든 컨셉이 모델링될 때만 모델링돼요.

예제

#include <iterator>
#include <vector>
#include <concepts>

int main()
{
    static_assert(std::mergeable<std::vector<int>::iterator,
                                 std::vector<int>::iterator,
                                 std::vector<int>::iterator>);
}

더 알아보기 (Learn more)

cppreference