Or login with:
#include <algorithm> template < class InputIterator1, class InputIterator2, class OutputIterator > OutputIterator set_symmetric_difference( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result ); template < class InputIterator1, class InputIterator2, class OutputIterator, class BinaryPredicate > OutputIterator set_symmetric_difference( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, BinaryPredicate comp );Parameters:
| Parameter | Description |
|---|---|
| first1 | An input iterator addressing the position of the first element in the first of two sorted source ranges to be united and sorted into a single range representing the symmetric difference of the two source ranges |
| last1 | An input iterator addressing the position one past the last element in the first of two sorted source ranges to be united and sorted into a single range representing the symmetric difference of the two source ranges |
| first2 | An input iterator addressing the position of the first element in second of two consecutive sorted source ranges to be united and sorted into a single range representing the symmetric difference of the two source ranges |
| last2 | An input iterator addressing the position one past the last element in second of two consecutive sorted source ranges to be united and sorted into a single range representing the symmetric difference of the two source ranges |
| result | An output iterator addressing the position of the first element in the destination range where the two source ranges are to be united into a single sorted range representing the symmetric difference of the two source ranges |
| comp | User-defined predicate function object that defines the sense in which one element is greater than another. The binary predicate takes two arguments and should return true when the first element is less than the second element and false otherwise |
[first1, last1) which are not found in the sorted range [first2, last2) and the elements from the sorted range [first2, last2) which are not found in the sorted range [first1, last1) to the range beginning at result.
m times in [first1, last1) and n times in [first2, last2) (where m or n may be zero), then it appears abs(m-n) times in the output range.
operator<, and the second compares objects using a function object comp.2 * ((last1 - first1) + (last2 - first2)) - 1 comparisons.#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int a1[] = {11, 12, 12, 12, 12, 13, 14, 15}; vector<int> v1(a1, a1+8); cout <<"\nHere are the values in the vector v1:\n"; for (vector<int>::size_type i=0; i<v1.size(); i++) cout <<v1.at(i)<<" "; int a2[] = {11, 12, 12, 13, 13, 16, 17, 18}; vector<int> v2(a2, a2+8); cout <<"\nHere are the values in the vector v2:\n"; for (vector<int>::size_type i=0; i<v2.size(); i++) cout <<v2.at(i)<<" "; int a3[] = {101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115}; vector<int> v3(a3, a3+15); cout <<"\nHere are the values in the vector v3:\n"; for (vector<int>::size_type i=0; i<v3.size(); i++) cout <<v3.at(i)<<" "; cout <<"\nNow we find the values that are in v1 but not in v2, " "as well as those that are\nin v2 but not in v1, and write " "them out to v3, starting at the beginning of v3." vector<int>::iterator p; p = set_symmetric_difference(v1.begin(), v1.end(), v2.begin(), v2.end(), v3.begin()); cout <<"\nHere are the revised contents of v3:\n"; for (vector<int>::size_type i=0; i<v3.size(); i++) cout <<v3.at(i)<<" "; cout <<"\nThe iterator returned by the algorithm is pointing at the value "<<*p<<"."; return 0; }
You must login to leave a messge