Иллюстрированный самоучитель по Visual Studio.Net



              

Контейнер типа set - часть 2


Ниже они будут использованы в конструкторе шаблона классов set. Тем самым определен порядок сортировки элементов контейнера:

void main ()

{

//====== Обычные неупорядоченные массивы символов

const int N = 6; const char* a[N] =

{

"Set", "Pet", "Net", "Get", "Bet", "Let"

};

const char* b[N] =

{

"Met", "Wet", "Jet",

"Set", "Pet", "Net",

} ;

//======== Создаем два множества обычных строк,

//======== определяя отношение порядка

set<const char*, LessStr> A(a, a + N);

set<const char*, LessStr> B(b, b + N);

//======== Создаем пустое множество

set<const char*, LessStr> C;

//======== Выходной итератор привязываем к cout

cout « "Set A: {";

copy (A.begin (), A.end.(),

ostream_iterator<const char*>(cout, "; "));

cout « ' } ' ;

cout « "\n\nSet B:

copy (B.begin (), B.end(), .. ostream_iterator<const char*>(cout, ", "));

//======= Создаем и выводим объединение двух множеств

cout « "\n\nUnion A U В: ";

set_union (A.begin () , A.end(), B.begin(), B.end(),

ostream_iterator<const char*>(cout, ", "),

LessStr () )';

//======= Создаем и выводим пересечение двух множеств

cout « "\n\nlntersection А & В: ";

set_intersection (A.begin () , A.end(), B.beginO, B.end(), ostream_iterator<const char*>(cout, " "), LessStrO);

//===== Создаем разность двух множеств

//===== Используем inserter для заполнения множества С

set_dif ference (A.begin () , A.end(), B.beginO, B.end(),

inserter (С, C.begin()),

LessStr() ) ;

cout « "\n\nDifference A/B: ";

//===== Копируем множество прямо в выходной поток сору

С. begin () , С.

end ();

ostream_iterator<const char*>(cout, " "));

С. clear () ;

//===== Повторяем в обратную сторону

set_dif ference (В. begin () , B.endO, A.begin(), A.end(),



Содержание  Назад  Вперед