Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
C++ для начинающих.pdf
Скачиваний:
183
Добавлен:
01.05.2014
Размер:
3.97 Mб
Скачать

#include <algorithm> #include <vector> #include <iostream.h>

int main()

{

int ia[] = {29,23,20,22,17,15,26,51,19,12,35,40}; sort( &ia[0], &ia[12] );

int search_value = 18;

int *ptr = lower_bound( ia, ia+12, search_value );

//печатается:

//Первый элемент, перед которым можно вставить 18, - это

19 // Предыдущее значение равно 17

cout << "Первый элемент, перед которым можно вставить "

<<search_value

<<", – это "

<<*ptr << endl

<<"Предыдущее значение равно "

<<*(ptr-1) << endl;

vector< int, allocator > ivec( ia, ia+12 );

// отсортировать в порядке возрастания ...

sort( ivec.begin(), ivec.end(), greater<int>() );

search_value = 26;

vector< int, allocator >::iterator iter;

//необходимо указать, как именно

//осуществлялась сортировка ...

iter = lower_bound( ivec.begin(), ivec.end(), search_value, greater<int>() );

//печатается:

//Первый элемент, перед которым можно вставить 26, - это

26 // Предыдущее значение равно 29

cout << "Первый элемент, перед которым можно вставить "

<<search_value

<<", - это "

<<*iter << endl

<<"Предыдущее значение равно "

<<*(iter-1) << endl;

return 0;

}

Алгоритм max()

template< class Type > const Type&

max( const Type &aval, const Type &bval );

template< class Type, class Compare > const Type&

max( const Type &aval, const Type &bval, Compare comp );

max() возвращает наибольшее из двух значений aval и bval. В первом варианте используется оператор “больше”, определенный в классе Type; во втором – операция сравнения comp.

Алгоритм max_element()

template< class ForwardIterator > ForwardIterator

max_element( ForwardIterator first, ForwardIterator last );

template< class ForwardIterator, class Compare

>

ForwardIterator

max_element( ForwardIterator first, ForwardIterator last, Compare comp );

max_element() возвращает итератор, указывающий на элемент, который содержит наибольшее значение в последовательности, ограниченной диапазоном [first,last). В первом варианте используется оператор “больше”, определенный для типа элементов контейнера; во втором – операция сравнения comp.

Алгоритм min()

template< class Type > const Type&

min( const Type &aval, const Type &bval );

template< class Type, class Compare > const Type&

min( const Type &aval, const Type &bval, Compare comp );

min() возвращает меньшее из двух значений aval и bval. В первом варианте используется оператор “меньше”, определенный для типа Type; во втором – операция сравнения comp.

Алгоритм min_element()

template< class ForwardIterator > ForwardIterator

min_element( ForwardIterator first, ForwardIterator last );

template< class ForwardIterator, class Compare

>

ForwardIterator

min_element( ForwardIterator first, ForwardIterator last, Compare comp );

max_element() возвращает итератор, указывающий на элемент, который содержит наименьшее значение последовательности, ограниченной диапазоном [first,last). В первом варианте используется оператор “меньше”, определенный для типа элементов

// иллюстрирует max(), min(), max_element(), min_element()

#include <algorithm> #include <vector> #include <iostream.h>

int main()

{

int ia[] = { 7, 5, 2, 4, 3 };

const vector< int, allocator > ivec( ia, ia+5 );

int mval = max( max( max( max(ivec[4],ivec[3]), ivec[2]),ivec[1]),ivec[0]);

// вывод: результат вложенных вызовов max() равен: 7 cout << "результат вложенных вызовов max() равен: "

<< mval << endl;

mval = min( min( min( min(ivec[4],ivec[3]), ivec[2]),ivec[1]),ivec[0]);

// вывод: результат вложенных вызовов min() равен: 2 cout << "результат вложенных вызовов min() равен: "

<< mval << endl;

vector< int, allocator >::const_iterator iter; iter = max_element( ivec.begin(), ivec.end() );

// вывод: результат вложенных вызовов max_element() также равен: 7

cout << "результат вложенных вызовов max_element() также равен: " << *iter << endl;

iter = min_element( ivec.begin(), ivec.end() );

// вывод: результат вложенных вызовов min_element() также равен: 2

cout << "результат вложенных вызовов min_element() также равен: " << *iter << endl;

контейнера; во втором – операция сравнения comp.

}

Алгоритм merge()

template< class InputIterator1, class InputIterator2,

class OutputIterator > OutputIterator

merge( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result );

template< class InputIterator1, class InputIterator2,

class OutputIterator, class Compare > OutputIterator

merge( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2,

OutputIterator result, Compare comp );

merge() объединяет две отсортированные последовательности, ограниченные диапазонами [first1,last1) и [first2,last2), в единую отсортированную последовательность, начинающуюся с позиции result. Результирующий итератор записи указывает на элемент за концом новой последовательности. В первом варианте для упорядочения используется оператор “меньше”, определенный для типа элементов контейнера; во втором – операция сравнения comp.