![]() |
|
Программирование >> Операторы преобразования типа
int mainO list<int> colli: set<int> C0112; Заполнение обеих коллекций упорядоченными элементами INSERTJLEMENTS(coll 1.1.6): INSERT ELEMENTS(coll2.3.8): PRINTJLEMENTS (col 11. col 11: ); PRlNTJLEMENTS(coll2. coll2: ): Вывод результата слияния cout merged: ; merge (colU.beginO. colli.endO, C0112.beginO. coll2.end(), ostream iterator<int>(cout, )): cout endl; Результат выполнения программы выглядит так: colli: 12 3 4 5 6 С0112: 3 4 5 6 7 8 merged: 123344556678 Объединение двух упорядоченных множеств элементов Outputlterator set union (Inputlterator sourcelBeg. Inputlterator sourcelEnd, Inputlterator source2Beg. Inputlterator source2End. Outputlterator destBeg) set un1on (Inputlterator sourcelBeg. Inputlterator sourcelEnd. Inputlterator source2Beg. Inputlterator source2End, Outputlterator destBeg. BinaryPredicate op) О Обе формы комбинируют элементы упорядоченных исходных интервалов source 1Beg,sourceIEnd) и [source2Begource2End) таким образом, что приемный интервал [destBeg,...) содержит все элементы, присутствующие в первом интервале, во втором интервале или в обоих интервалах сразу. Например, рассмотрим два интервала: 1 2 2 4 6 7 7 9 22236689 В результате вызова алгоритма set union() для этих интервалов будет получен следующий интервал: 122234667789 О В приемном интервале элементы следуют в порядке сортировки. О Элементы, входящие в оба интервала, включаются в объединение только в одном экземпляре. Тем не менее приемный интервал может содержать дубликаты, если соответствующий элемент дублируется в одном из исходных интервалов. Количество элементов с одинаковыми значениями в приемном интервале равно их максимальному количеству в двух исходных интервалах. О Обе формы возвращают позицию за последним скопированным элементом в приемном интервале (то есть позицию первого элемента, который не был перезаписан). О В необязательном параметре ор передается бинарный предикат, определяющий критерий сортировки: op(elemi,elem2). О Алгоритмы не изменяют состояние исходных интервалов. О Перед вызовом интервалы должны быть упорядочены по соответствующему критерию сортировки. О Перед вызовом необходимо убедиться в том, что приемный интервал имеет достаточный размер, или использовать итераторы вставки. О Приемный интервал не должен перекрываться с исходными интервалами. О Чтобы без удаления элементов включить в приемный интервал все элементы, присутствующие в обоих исходных интервалах, используйте алгоритм mergeO (см. с. 406). О Сложность линейная (не более 2x(numberOfElements 1+numberOfElements2)А сравнений). Пример использования алгоритма set union() приведен на с. 411. В этом примере также продемонстрированы отличия алгоритма set union() от других алгоритмов, комбинирующих элементы двух упорядоченных интервалов. Пересечение двух упорядоченных множеств элементов Outputlterator setjntersection (Inputlterator sourcelBeg, Inputlterator sourcelEnd. Inputlterator source2Beg. Inputlterator source2End. Outputlterator destBeg) setjntersection (Inputlterator sourcelBeg. Inputlterator sourcelEnd. Inputlterator source2Beg, Inputlterator source2End. Outputlterator destBeg. BinaryPredicate op) О Обе формы комбинируют элементы упорядоченных исходных интервалов [source 1Beg,source1 End) и [source2Beg,source2End) таким образом, что приемный интервал [destBeg,...) содержит все элементы, присутствующие в обоих интервалах сразу. Например, рассмотрим два интервала: 1 2 2 4 6 7 7 9 22236689 В результате вызова алгоритма set intersection() для этих интервалов будет получен следующий интервал: 2 2 6 9 О В приемном интервале элементы следуют в порядке сортировки. О Приемный интервал может содержать дубликаты, если соответствующий элемент дублируется в одном из исходных интервалов. Количество элементов с одинаковыми значениями в приемном интервале равно их минимальному количеству в двух исходных интервалах. О Обе формы возвращают позицию за последним скопированным элементом в приемном интервале. О В необязательном параметре ор передается бинарный предикат, определяющий критерий сортировки: op(elem1 ,elem2). О Алгоритмы не изменяют состояние исходных интервалов. О Перед вызовом интервалы должны быть упорядочены по соответствующему критерию сортировки. О Перед вызовом необходимо убедиться в том, что приемный интервал имеет достаточный размер, или использовать итераторы вставки. О Сложность линейная (не более 2x(numberOfElements1+nuTnberOfElements2)-[ сравнений). Пример использования алгоритма set intersection() приведен на с. 411. В этом примере также продемонстрированы отличия алгоритма seUntersection() от других алгоритмов, комбинирующих элементы двух упорядоченных интервалов. Разность двух упорядоченных множеств элементов Outputlterator set cl1ffGrence (Inputlterator sourcelBeg. Inputlterator sourcelEnd. Inputlterator source2Beg, Inputlterator source2End. Outputlterator destBeg) set cllfference (Inputlterator sourcelBeg. Inputlterator sourcelEnd. Inputlterator source2Beg. Inputlterator source2End. Outputlterator destBeg. BinaryPredicate op) О Обе формы комбинируют элементы упорядоченных исходных интервалов source 1Beg,source1 End) и [source2Beg,source2End) таким образом, что приемный интервал [destBeg,...) содержит все элементы, присутствующие в первом интервале, но не входящие во второй интервал. Например, рассмотрим два интервала: 1 2 2 4 6 7 7 9 22236689 В результате вызова алгоритма set difference() для этих интервалов будет получен следующий интервал: 14 4 7 О В приемном интервале элементы следуют в порядке сортировки.
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |