Там могут быть реализованы STL пересечение, объединение, разность, симметрическая разность множеств алгоритма.
Перед использованием необходимо включить заголовочный файл:
#include <алгоритм>
Примечание: Используй вычислить алгоритмы пересечения и объединения должны обеспечить, чтобы операции участвовали два комплекта заказанных! ! !
пересечения:
Пример: найти {1,2,3} и {2,3,4} пересечение:
Нам нужно использовать функцию:
set_intersection (v1.begin (), v1.end (), v2.begin (), v2.end (), вставки (v3, v3.begin ()));
Первый параметр и второй параметр в виде итератора определяет диапазон первого набора, участвующий в вычислениях.
Третий параметр и четвертый параметр также в виде итераторов, второй диапазон определяет набор участвующий в вычислениях.
Пятый параметр вставляется итератора, он содержит два параметра, первый набор параметров указывает расчетный результат сохраняется в качестве второго параметра в виде итератора, задает соответствующий набор результатов, который вставляется до положения.
Расчет и обратно объединение, разность, пересечение и расчет функции те же симметричные детали использования разности функции не повторяются.
Код:
<. бит / STDC ++ H> #include #define повторно зарегистрировать #define х Endl использование патезраса; сопзЬ Int N = 100005; вектор <Int> v1, v2, v3; рядный INT чтения () { INT F = 0, х = 0; символ ч; делать {ч = GetChar (); е | = ч == '-'; (! isdigit (ч))} , а; делать {х = (х << 3) + (х << 1) + (ч ^ 48); ч = GetChar ();} , а (isdigit (ч)); вернуться п? -x: х; } INT основных () { для (ре Int = 1; г <= 3; ++ я) v1.push_back (я); // v1 1 2 3 для (ре INT I = 2; г <= 4 + + I) v2.push_back (я); // v2 2 3 4 set_intersection (v1.begin (), v1.end (), v2.begin (), v2.end (), вставки (v3, v3.begin ( ))); // v3 2 3 для (ре INT I = 0; г <v3.size (); ++ я) соиЬ << v3 [I] < возвращать 0; }
Союз:
Пример: найти {1,2,3} и {2,3,4} и множество:
Нам нужно использовать функцию:
set_union (v1.begin (), v1.end (), v2.begin (), v2.end (), вставки (v3, v3.begin ()));
Код:
<. бит / STDC ++ H> #include #define повторно зарегистрировать #define х Endl использование патезраса; сопзЬ Int N = 100005; вектор <Int> v1, v2, v3; рядный INT чтения () { INT F = 0, х = 0; символ ч; делать {ч = GetChar (); е | = ч == '-'; (! isdigit (ч))} , а; делать {х = (х << 3) + (х << 1) + (ч ^ 48); ч = GetChar ();} , а (isdigit (ч)); вернуться п? -x: х; } INT основных () { для (ре Int = 1; г <= 3; ++ я) v1.push_back (я); // v1 1 2 3 для (ре INT I = 2; г <= 4 + + I) v2.push_back (я); // v2 2 3 4 set_union (v1.begin (), v1.end (), v2.begin (), v2.end (), вставки (v3, v3.begin ( ))); // v3 1 2 3 4 для (ре INT I = 0; г <v3.size (); ++ я) соиЬ << v3 [I] << возвращать 0; }
Разница набор:
Пример: найти {1,2,3} и {2,3,4} разность множеств:
Нам нужно использовать функцию:
set_difference (v1.begin (), v1.end (), v2.begin (), v2.end (), вставки (v3, v3.begin ()));
Код:
<. бит / STDC ++ H> #include #define повторно зарегистрировать #define х Endl использование патезраса; сопзЬ Int N = 100005; вектор <Int> v1, v2, v3; рядный INT чтения () { INT F = 0, х = 0; символ ч; делать {ч = GetChar (); е | = ч == '-'; (! isdigit (ч))} , а; делать {х = (х << 3) + (х << 1) + (ч ^ 48); ч = GetChar ();} , а (isdigit (ч)); вернуться п? -x: х; } INT основных () { для (ре Int = 1; г <= 3; ++ я) v1.push_back (я); // v1 1 2 3 для (ре INT I = 2; г <= 4 + + I) v2.push_back (я); // v2 2 3 4 set_difference (v1.begin (), v1.end (), v2.begin (), v2.end (), вставки (v3, v3.begin ( ))); // v3 1 для (вос Int я = 0; я <v3.size (); ++ я) соиЬ << v3 [я] << возвращать 0; }
Симметричная разница:
Пример: найти {1,2,3} и {2,3,4} симметрической разности:
Нам нужно использовать функцию:
set_symmetric_difference (v1.begin (), v1.end (), v2.begin (), v2.end (), вставки (v3, v3.begin ()));
Код:
<. бит / STDC ++ H> #include #define повторно зарегистрировать #define х Endl использование патезраса; сопзЬ Int N = 100005; вектор <Int> v1, v2, v3; рядный INT чтения () { INT F = 0, х = 0; символ ч; делать {ч = GetChar (); е | = ч == '-'; (! isdigit (ч))} , а; делать {х = (х << 3) + (х << 1) + (ч ^ 48); ч = GetChar ();} , а (isdigit (ч)); вернуться п? -x: х; } INT основных () { для (ре Int = 1; г <= 3; ++ я) v1.push_back (я); // v1 1 2 3 для (ре INT I = 2; г <= 4 + + I) v2.push_back (я); // v2 2 3 4 set_symmetric_difference (v1.begin (), v1.end (), v2.begin (), v2.end (), вставки (v3, v3.begin ( ))); // v3 1 4 для (пере ИНТ я = 0; я <v3.size (); ++ я) соиЬ << возвращать 0; }