Пространства имён
Варианты
Действия

set_intersection

Материал из cppreference.com

Синтаксис:

    #include <algorithm>
    template< typename InIterA, typename InIterB, typename OutIter >
    OutIter set_intersection( InIterA start1, InIterA end1, InIterB start2, InIterB end2, OutIter result );
    template< typename InIterA, typename InIterB, typename OutIter, typename StrictWeakOrdering >
    OutIter set_intersection( InIterA start1, InIterA end1, InIterB start2, InIterB end2, OutIter result, StrictWeakOrdering cmp );

Алгоритм set_intersection() вычисляет пересечение двух множеств, определенных как [start1,end1) и [start2,end2) и располагает пересечение начиная с result.

Оба множества заданы как диапазоны и должны быть отсортированы по возрастанию.

Возвращаемое значение функции - итератор на конец диапазона пересечения.

set_intersection() работает за линейное время.

Если требуется повышенная точность, вводится сравнивающая функция-объект cmp, которая используется вместо оператора < для сравнения элементов.

Пример:

// пример set_intersection
#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_intersection (first, first+5, second, second+5, v.begin());
                                               // 10 20 0  0  0  0  0  0  0  0
 
  cout << "intersection has " << int(it - v.begin()) << " elements.\n";
 
  return 0;
}

Вывод: intersection has 2 elements


Смотрите также: includes, set_difference, set_symmetric_difference, set_union