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; просмотров: 766;
