Программирование >>  Инициализация объектов класса, структура 

1 ... 367 368 369 [ 370 ] 371 372 373 ... 395


#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. В первом варианте



1 ... 367 368 369 [ 370 ] 371 372 373 ... 395

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика