[STL] набор операций

Там могут быть реализованы 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; 
}

рекомендация

отwww.cnblogs.com/luotei/p/11109360.html