set_symmetric_difference

set_symmetric_difference (대칭 차집합)

두 정렬 범위 중 정확히 한쪽에만 있는 원소를 출력하는 알고리즘이에요. <algorithm> 헤더에 있어요.

출처: cppreference

본문

set_symmetric_difference[first1, last1)[first2, last2)에 각각만 있는 원소(공통이 아닌 것)를 d_first에 복사해요.

template< class InputIt1, class InputIt2, class OutputIt >
OutputIt set_symmetric_difference( InputIt1 first1, InputIt1 last1,
                                   InputIt2 first2, InputIt2 last2,
                                   OutputIt d_first );   // (1)

비교기 버전도 있어요.

template< class InputIt1, class InputIt2, class OutputIt, class Compare >
OutputIt set_symmetric_difference( InputIt1 first1, InputIt1 last1,
                                   InputIt2 first2, InputIt2 last2,
                                   OutputIt d_first, Compare comp );   // (2)
  • 두 범위는 정렬되어 있어야 해요.
  • 반환 값: 마지막으로 쓴 출력 다음 반복자.
std::vector<int> a{1, 2, 3, 4, 5};
std::vector<int> b{2, 4, 6};
std::vector<int> out;
std::set_symmetric_difference(a.begin(), a.end(), b.begin(), b.end(),
                              std::back_inserter(out));
// out == {1,3,5,6}

집합 이론의 "대칭 차집합"을 정렬된 시퀀스로 구하는 함수예요.

더 알아보기 (Learn more)

cppreference