|
Программирование >> Инициализация объектов класса, структура
#include <algorithm> #include <vector> #include <iostream.h> int main() int ia1[] = { 13, 1, 21, 2, 0, 34, 5, 1, 8, 3, 21, 34 }; int ia2[] = { 21, 2, 8, 3, 5, 1 }; алгоритму includes следует передавать отсортованнхе контейнеры sort( ia1, ia1+12 ); sort( ia2, ia2+6 ); печатает: кажд элемент ia2 входит в ia1? Да , ia1+12, ia2 входит ет ) << en vector< int, allocator > ivect1( ia1, ia1+12 vector< int, allocator > ivect2( ia2, ia2+6 ) bool res = includes( ia1, ia1+12, ia2, ia2+6 ); cout << кажд элемент ia2 входит в ia1? << (res ? Да : Нет ) << endl; / / отсортован в порядке убания sort( ivect1.begin(), ivect1.end(), greater<int>() ); sort( ivect2.begin(), ivect2.end(), greater<int>() ); res = includes( ivect1.begin(), ivect1.end(), ivect2.begin(), ivect2.end(), greater<int>() ); печатает: кажд элемент ivect2 входит в ivect1? Да cout << кажд элемент ivect2 входит в ivect1? << (res ? Да : Нет ) << endl; второй - что порядок задается параметром-типом comp. Алгоритм inner product() последовательности отсортированы в порядке, определяемом оператором меньше ; template< class InputIterator1, class InputIterator2 class Type > Type inner product( InputIterator1 first1, InputIterator1 last, InputIterator2 first2, Type init ); template< class InputIterator1, class InputIterator2 class Type, class BinaryOperation1, class BinaryOperation2 > Type inner product( InputIterator1 first1, InputIterator1 last, InputIterator2 first2, Type init, BinaryOperation1 op1, BinaryOperation2 op2 ); Первый вариант суммирует произведения соответственных членов обеих последовательностей и прибавляет результат к начальному значению init. Первая последовательность ограничена итераторами [first1,last1) , вторая начинается с first2 и обходится синхронно с первой. Например, если даны последовательности {2,3,5,8} и {1,2,3,4}, то результат вычисляется следующим образом: 2*1 + 3*2 + 5*3 + 8*4 Если начальное значение равно 0, алгоритм вернет 55. Во втором варианте вместо сложения используется бинарная операция op1, а вместо умножения - бинарная операция op1. Например, если для приведенных выше последовательностей применить вычитание в качестве op1 и сложение в качестве op2, то результат будет вычисляться так: р2 + 1) - (3+2) - (5+3) - (8 + 4) inner product() - это один из численных алгоритмов. Для его использования в программу необходимо включить заголовочный файл <numeric>. #include <numeric> #include <vector> #include <iostream.h> int main() int ia[] = { 2, 3, 5, 8 }; int ia2[] = { 1, 2, 3, 4 }; перемножить пары элементов из обоих массивов, сложить и добавить начальное значение: 0 int res = inner product( &ia[0], &ia[4], &ia2[0], 0 ); печатает: скалярное произведение массивов: 55 cout << скалярное произведение массивов: << res << endl; vector<int, allocator> vec( ia, ia+4 ); vector<int, allocator> vec2( ia2, ia2+4 ); сложить пары элементов из обоих векторов, вгчесть из начального значения: 0 res = inner product( vec.begin(), vec.end(), vec2.begin(), 0, minus<int>(), plus<int>() ); печатает: скалярное произведение векторов: -28 cout << скалярное произведение векторов: << res << endl; return 0; template< class BidirectionalIterator > void inplace merge( BidirectionalIterator first, BidirectionalIterator middle, BidirectionalIterator last ); template< class BidirectionalIterator, class Compare > void inplace merge( BidirectionalIterator first, BidirectionalIterator middle, Алгоритм inplace merge() BidirectionalIterator last, Compare comp ); inplace merge() объединяет две соседние отсортированные последовательности, ограниченные парами итераторов [first,miiddle) и [miiddle,last). Результирующая последовательность затирает исходные, начиная с позиции first. В первом варианте
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |