Void main(). transform(a, a + m, b, a, preobr());
{
const int m = 5;
double a[m] = {5, 3, 2, 3, 1},
b[m] = { 1 ,10, -3, 2, -4};
transform(a, a + m, b, a, preobr());
transform(b, b + m, b, negate<double>());
int i;
for (i = 0; i<m; i++) cout << a[i] << " ";
cout << endl;
for (i = 0; i<m; i++) cout << b[i] << " ";
cout<< endl;
}
Результат роботи програми:
24 -91 -5 5 -15
-1 -10 3-2 4
11.3.3 Алгоритми, пов'язані з сортуванням
Алгоритми цієї категорії упорядковують послідовності, виконують пошук елементів, злиття послідовностей, пошук мінімуму і максимуму, лексикографічне порівняння, перестановки тощо.
Таблиця 11.5. Алгоритми, пов'язані з сортуванням
Алгоритм | Виконувана функція |
binary_search | Пошук заданого значення |
equal_range | Знаходження послідовності елементів із заданим значенням |
lnplace_merge | Злиття відсортованих послідовностей одного діапазону |
lexicographical_compare | Лексикографічно перша з двох послідовностей |
lower_bound | Знаходження першого входження заданого значення |
max | Більше з двох значень |
max_element | Найбільше значення в послідовності |
merge | Злиття відсортованих послідовностей |
min | Менше з двох значень |
min_element | Найменше значення в послідовності |
next_permutat1on | Наступна перестановка в лексикографічному порядку |
nth_element | Поміщення n-го елементу на задане місце |
partial_sort | Часткове сортування |
partial_sort_copy | Часткове сортування з копіюванням |
partition | Переміщення вперед елементів, що задовольняють умові |
Продовження таблиці 11.5 | |
Алгоритм | Виконувана функція |
prev_permutation | Попередня перестановка в лексикографічному порядку |
sort | Сортування |
stable_partition | Переміщення вперед елементів, що задовольняють умові, із збереженням їх відносного порядку |
stable_sort | Сортування, що зберігає порядок для однакових елементів |
upper_bound | Знаходження першого елементу, більшого, ніж задане значення |
Розглянемо приклади використання деяких алгоритмів. Для кожного з алгоритмів існує дві форми: одна використовує операцію "<", а інша – функцію порівняння, задану користувачем. Багатьом алгоритмам потрібні ітератори довільного доступу.
Алгоритм lexicographical_compare. Він виконує поелементне порівняння двох послідовностей або з використанням операції "<", або за допомогою заданої функції соmр. Повертається true, якщо перша послідовність лексикографічно менше другої (тобто черговий елемент першої послідовності опинився менше відповідного елементу другої), і false в іншому випадку. Якщо довжини послідовностей не збігаються, елементи, яких бракує вважаються меншими відповідних елементів іншої послідовності.
Приклад:
#include <iostream>
#include <algorithm>
#include <functional>
using namespace std;
Дата добавления: 2014-12-26; просмотров: 679;