Синтаксис:
#include <algorithm> output_iterator set_symmetric_difference( input_iterator start1, input_iterator end1, input_iterator2 start2, input_iterator2 end2, output_iterator result ); output_iterator set_symmetric_difference( input_iterator start1, input_iterator end1, input_iterator2 start2, input_iterator2 end2, output_iterator result, StrictWeakOrdering cmp );
Алгоритм set_symmetric_difference() вычисляет симметричную разность между двумя множествами, определенными как [start1,end1) и [start2,end2), и располагает результат начиная с result.
Оба множества, заданные как диапазоны, должны быть отсортированы по возрастанию.
Возвращаемое значение set_symmetric_difference() - итератор на конец результирующего диапазона.
Если требуется повышенная точность, нужно задать упорядочивающую сравнивающую функцию-объект cmp, которая используется вместо стандартного оператора сравнения <.
Пример:
// пример set_symmetric_difference #include <iostream> #include <algorithm> #include <vector> using namespace std; int main () { int first[] = {5,10,15,20,25}; int second[] = {50,40,30,20,10}; vector<int> v(10); // 0 0 0 0 0 0 0 0 0 0 vector<int>::iterator it; sort (first,first+5); // 5 10 15 20 25 sort (second,second+5); // 10 20 30 40 50 it=set_symmetric_difference (first, first+5, second, second+5, v.begin()); // 5 15 25 30 40 50 0 0 0 0 cout << "symmetric difference has " << int(it - v.begin()) << " elements.\n"; return 0; }
Вывод: symmetric difference has 6 elements
Смотрите также: includes, set_difference, set_intersection, set_union