Graphisoft®

GSRootVersion: 1.0

SetSymmetricDifference

정렬된 소스 범위 중 하나에 속하지만 양쪽에 모두 속하지 않은 모든 요소를 단일 정렬된 대상 범위로 통합합니다. 여기서 순서 기준은 이항 술어로 지정될 수 있습니다.

template <class In1, class In2, class Out>
Out SetSymmetricDifference (
    In1                 first1,
    In1                 last1,
    In2                 first2,
    In2                 last2,
    Out                 res
);
template <class In1, class In2, class Out, class BinPred>
Out SetSymmetricDifference (
    In1                 first1,
    In1                 last1,
    In2                 first2,
    In2                 last2,
    Out                 res,
    BinPred             pred
);

Template 파라미터

In1
입력 반복자입니다.
In2
입력 반복자입니다.
Out
출력 반복자입니다.
BinPred
이항 술어(Binary predicate)입니다.

파라미터

first1
2개의 소스 범위들의 대칭 차집합을 의미하는 단일 범위로 통합되고 정렬되는 2개의 정렬된 소스 범위들 중 1번째 범위의 1번째 요소의 위치를 설명하는 입력 반복자입니다.
last1
2개의 소스 범위들의 대칭 차집합을 의미하는 단일 범위로 통합되고 정렬되는 2개의 정렬된 소스 범위들 중 1번째 범위의 마지막 직전 요소의 위치를 설명하는 입력 반복자입니다.
first2
2개의 소스 범위들의 대칭 차집합을 의미하는 단일 범위로 통합되고 정렬되는 2개의 정렬된 소스 범위들 중 2번째 범위의 1번째 요소의 위치를 설명하는 입력 반복자입니다.
last2
2개의 소스 범위들의 대칭 차집합을 의미하는 단일 범위로 통합되고 정렬되는 2개의 정렬된 소스 범위들 중 2번째 범위의 마지막 직전 요소의 위치를 설명하는 입력 반복자입니다.
res
목적지 범위의 1번째 요소의 위치를 설명하는 출력 반복자입니다. 이 목적지 범위는 2개의 소스 범위들의 대칭 차집합을 의미하는 정렬된 단일 범위로 2개의 소스 범위들이 통합될 것입니다.
pred
어떤 요소가 다른 요소보다 크다는 의미를 정의하는 사용자 정의 술어 함수 객체입니다. 이항 술어(binary predicate)는 2개의 인자를 취하며 1번째 요소가 2번째 요소보다 작으면 true를, 그 외에는 false를 리턴합니다.

리턴 값

2개의 소스 범위들의 대칭 차집합을 의미하는 정렬된 목적지 범위의 마지막 직전 요소의 위치를 설명하는 출력 반복자입니다.

설명

SetSymmetricDifference는 정렬된 범위들 [first1, last1)[first2, last2)의 대칭 차집합을 의미하는 정렬된 범위를 구성합니다. 리턴 값은 출력 범위의 끝입니다. 가장 단순한 경우, SetSymmetricDifference는 집합의 이론적 계산을 수행합니다: 이것은 두 집합 A - BB - A의 합집합을 구성합니다. 여기서 AB는 입력 범위들입니다. 즉, 출력 범위는 [first1, last1)에 있지만 [first2, last2)에는 없는 모든 요소의 사본과 [first2, last2)에 있지만 [first1, last1)에는 없는 모든 요소의 사본을 포함하고 있습니다. 일반적인 경우는 좀 더 복잡합니다. 왜냐하면 입력 범위들이 중복된 요소들을 포함할 수도 있기 때문입니다. 일반화하면, 어떤 값이 [first1, last1)에서 m번 나타나고 [first2, last2)에서 n번 나타나면, (여기서 m 또는 n은 0이 될 수도 있음) 출력 범위에서는 |m-n|번 나타나게 됩니다. SetSymmetricDifference는 안정적입니다. 이것은 각 입력 범위 안에 요소들의 상대적인 순서가 보존된다는 것을 의미합니다. SetSymmetricDifference의 2가지 버전들은 어떤 요소가 다른 요소보다 작은지 여부를 결정하는 방법에서 차이가 있습니다. 1번째 버전은 operator<를 사용하여 객체들을 비교하고, 2번째 버전은 술어 pred를 사용하여 객체들을 비교합니다.

참고사항

알고리즘