Algorithm Boost , Chapter 1. Phoenix 3.2.0 , STL
#include < boost / phoenix / stl / algorithm . hpp >
Модуль алгоритма предоставляет обертки для стандартных алгоритмов в алгоритме< > и< > заголовки.
Алгоритмы делятся на категории итерация, преобразование и запрос, моделирование библиотекиBoost.MPL . Различные классы алгоритмов могут быть включены с использованием заголовков:
#include < boost / phoenix / stl / algorithm / iteration . hpp >
#include < boost / phoenix / stl / algorithm / transformation . hpp >
#include < boost / phoenix / stl / algorithm / querying . hpp >
Функции модуля алгоритма принимают диапазоны в качестве аргументов. Это отличается от стандартной библиотеки, но достаточно легко подобрать. Об этом подробно рассказывается в. Библиотека .
Например, используя стандартный алгоритм копирования для копирования между 2 массивами:
int array [] = { 1 , 2 , 3 };
int output [ 3 ];
std :: copy ( array , array + 3 , output );
Аналогичный код с использованием модуля алгоритма Феникса:
int array [] = { 1 , 2 , 3 };
int output [ 3 ];
copy ( arg1 , arg2 )( array , output );
Ускорение. Библиотека диапазона обеспечивает поддержку стандартных контейнеров, строк и массивов и может быть расширена для поддержки дополнительных типов.
Следующие таблицы описывают различные категории алгоритмов и их семантику.
Table 1.6. Iteration Algorithms
Функция
Семантика
для каждого r , f
для_каждого начинайте r , конце r , f
аккумулировать r , o [, f ]
аккумулировать начать r , конец r r r , o f ]
Table 1.7. Querying Algorithms
Функция
Семантика
найти r ,
найти начать r , конец r , a
find_if r , f
find_if start r , end r , f
find_end [ r1 , r2 [, f ]
найти_конец начать r1 конецконец r1 r1начать начать r2 r2 f ]
find_first_of r1 , r2 f ]
найти_first_of [ начать r1 конец r1 начать r2 конец r2 r2 f ]
] ]
next_find r [, f ]
смежной_find начать r , конец r f ]
r , a
считать начинать r , заканчивать r , a
count_if r , f
считать_если начать r , закончить r , f
расстояние r
расстояние начало r , конец r ]
несоответствие r , i [, f ]
несоответствие начинают r , заканчивают r r ]
] [5
равны r , i [, ]
равны [ начинают [ r , заканчивают [ r r , f ]
поиск r1 , r2 [, ]
поиск начинают r1 конец r1 начинают начинают r2 заканчивают
] .
нижняя граница r , a [, f ]
нижняя граница начинается r , конец r r ]
r , a [, ]
верхняя связка начинается r , конец r ]
]
равный_диапазон r , a [, f ]
равный_диапазон начинается r , заканчивается r r , a [, f ]
binary_search r , a [, f ]
бинарный_поиск начинают r , заканчивают r , ]
включает r1 , r2 [, ]
включает в себя начало r1 , конец конец r1 r1, начало начало r2 , конец r2 [] f
.
min_element r [, f ]
min_element start r , end r f ]
max_element r [, f ]
max_element начать r , закончить r ]
лексикографический_сравните r1 , r2 [, f ]
лексикографический_сравните начинают r1 , конец r1 начинают начинают r2 r2 ] ]
] ] [
Table 1.8. Transformation Algorithms
Функция
Семантика
копия r , o
копия начинается r , заканчивается r , o
copy_backward r , o
copy_backward start r , end r , o
трансформировать r , o , f
преобразовать начать r , конец r r , f
преобразовать r , i , o , f
преобразовать начать r , закончить r r i , o , f
заменить r , a , b
заменить начать r , закончить r ,
a , b ]
заменить_if r , f , ]
заменить начать r , закончить r r ,
заменить_копию r , o , a , b
заменить_копию начать r , конец r
oa , b
заменить_copy_if r , o , f , a
заменить_copy_if начать r , конец r o, f , a
заполнить r ,
заполнить начать r , закончить r,
fill_n r , n , a ]
fill_n start r , n , a ]
генерировать r , f
генерируют начинают r , заканчивают r , f
генерировать_n r , n , f
генерируют_n начинают r , n , f
удалить r ,
удалить начать r , конец r ,
удалить_if r , f
удалить_if начать r , закончить r , f
remove_copy r , o ,
remove_copy start r , end r oa
удалить_copy_if r , o , f
remove_copy_if start r , end r r of
уникальный r f ]
уникальный начать r , конец r f]
уникальная копия r , o [, f ]
уникальная копия начинается r , конец r o [, f ]
обратный r
обратный начать r , конец r ]
reverse_copy r , o ]
reverse_copy start r , end r , o ]
повернуть r , м
повернуть начать r , m , конец r ]]
rotate_copy r , m , o
вращай_копию начинай r , m , конец r o ]
random_shuffle r [, f ]
случайный_шуффл начать r , конец r , f
раздел r , f
раздел начинают r , заканчивают r f
stable_partition r , f
stable_partition start r , end r f
сорт r [, f ]
сорт начинают r , заканчивают r f ]
stable_sort r [, f ]
stable_sort начать r конец r f ]
Partial_sort r , m f ]
Partial_sort начинают r , м , конец r f
partial_sort_copy r1 , r2 [, f ]
partic_sort_copy начинают r1 конец r1 начинают r2 r2 r2 f
nth_element r , n [, f ]
n-й элемент начинают r , n , заканчивают f ]
слить r1 , r2 , o [, f ]
слить начать r1 , конец r1r1, начать r2 r2 of
inplace_merge r , m f ]
inplace_merge start r , m , конец r f ]
set_union r1 , r2 , o f
set_union [ начинают [ r1 , конец r1 r1 , начинают [ r2 конец r2 ] []]
[[] [] [] [] [[]] [ ] [[]] [] [[
set_intersection r1 , r2 , o [, f ]
set_intersection start r1 end r1 r1 start r2 r2 r2 f
set_difference r1 , r2 , o f ]
set_difference start r1 end r1 r1 r1 start r2 r2r2 f
set_symmetric_difference r1 , r2 , o [, f ]
set_symmetric_difference start r1 , end r1 r1 r1 , start r2 r2 f
push_heap r f ]
push_heap start r , end r ] ]
pop_heap r f ]
pop_heap начать r , конец r ]
make_heap r [, f ]
make_heap start r , end r ] ]
sort_heap r [, f ]
sort_heap start r , end r f ]
следующая_пермутация r [, f ]
следующая_пермутация начинается r , заканчивается r ] ]
prev_permutation r [, f ]
prev_permutation start r , end r f ]
внутренний_продукт r , o , a [, f1 , f2 ]
внутренний продукт начинают r , заканчивают r o [, f1 , f2 ]
Partial_sum r , o [, f ]
Partial_sum начинают r , заканчивают r o f
смежное_различие r , o f ]
смежное_различие начало r , конец r of
Статья Algorithm раздела Chapter 1. Phoenix 3.2.0 STL может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: STL ::