Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Algorithm

Boost , Chapter 1. Phoenix 3.2.0 , STL

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext
#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); // We have to provide iterators
                                     // to both the start and end of array

Аналогичный код с использованием модуля алгоритма Феникса:

int array[] = {1, 2, 3};
int output[3];
copy(arg1, arg2)(array, output); // Notice only 2 arguments, the end of
                                 // array is established automatically

Ускорение. Библиотека диапазонаобеспечивает поддержку стандартных контейнеров, строк и массивов и может быть расширена для поддержки дополнительных типов.

Следующие таблицы описывают различные категории алгоритмов и их семантику.

Table 1.6. Iteration Algorithms

Функция

Семантика

для каждогоr,f

для_каждогоначинайтеr,концеr,f

аккумулироватьr,o[,f]

аккумулироватьначатьr,конецrrr,of]


Table 1.7. Querying Algorithms

Функция

Семантика

найтиr,

найтиначатьr,конецr,a

find_ifr,f

find_ifstartr,endr,f

find_end[r1,r2[,f]

найти_конецначатьr1конецконецr1r1начатьначатьr2r2f]

find_first_ofr1,r2f]

найти_first_of[начатьr1конецr1начатьr2конецr2r2f]

]]

next_findr[,f]

смежной_findначатьr,конецrf]

r,a

считатьначинатьr,заканчиватьr,a

count_ifr,f

считать_еслиначатьr,закончитьr,f

расстояниеr

расстояниеначалоr,конецr]

несоответствиеr,i[,f]

несоответствиеначинаютr,заканчиваютrr]

][5

равныr,i[,]

равны[начинают[r,заканчивают[rr,f]

поискr1,r2[,]

поискначинаютr1конецr1начинаютначинаютr2заканчивают

]

.

нижняя границаr,a[,f]

нижняя границаначинаетсяr,конецrr]

r,a[,]

верхняя связканачинаетсяr,конецr]

]

равный_диапазонr,a[,f]

равный_диапазонначинаетсяr,заканчиваетсяrr,a[,f]

binary_searchr,a[,f]

бинарный_поискначинаютr,заканчиваютr,]

включаетr1,r2[,]

включает в себяначалоr1,конецконецr1r1,началоначалоr2,конецr2[]f

.

min_elementr[,f]

min_elementstartr,endrf]

max_elementr[,f]

max_elementначатьr,закончитьr]

лексикографический_сравнитеr1,r2[,f]

лексикографический_сравнитеначинаютr1,конецr1начинаютначинаютr2r2]]

]][

Table 1.8. Transformation Algorithms

Функция

Семантика

копияr,o

копияначинаетсяr,заканчиваетсяr,o

copy_backwardr,o

copy_backwardstartr,endr,o

трансформироватьr,o,f

преобразоватьначатьr,конецrr,f

преобразоватьr,i,o,f

преобразоватьначатьr,закончитьrri,o,f

заменитьr,a,b

заменитьначатьr,закончитьr,

a,b]

заменить_ifr,f,]

заменитьначатьr,закончитьrr,

заменить_копиюr,o,a,b

заменить_копиюначатьr,конецr

oa,b

заменить_copy_ifr,o,f,a

заменить_copy_ifначатьr,конецro,f,a

заполнитьr,

заполнитьначатьr,закончитьr,

fill_nr,n,a]

fill_nstartr,n,a]

генерироватьr,f

генерируютначинаютr,заканчиваютr,f

генерировать_nr,n,f

генерируют_nначинаютr,n,f

удалитьr,

удалитьначатьr,конецr,

удалить_ifr,f

удалить_ifначатьr,закончитьr,f

remove_copyr,o,

remove_copystartr,endroa

удалить_copy_ifr,o,f

remove_copy_ifstartr,endrrof

уникальныйrf]

уникальныйначатьr,конецrf]

уникальная копияr,o[,f]

уникальная копияначинаетсяr,конецro[,f]

обратныйr

обратныйначатьr,конецr]

reverse_copyr,o]

reverse_copystartr,endr,o]

повернутьr,м

повернутьначатьr,m,конецr]]

rotate_copyr,m,o

вращай_копиюначинайr,m,конецro]

random_shuffler[,f]

случайный_шуффлначатьr,конецr,f

разделr,f

разделначинаютr,заканчиваютrf

stable_partitionr,f

stable_partitionstartr,endrf

сортr[,f]

сортначинаютr,заканчиваютrf]

stable_sortr[,f]

stable_sortначатьrконецrf]

Partial_sortr,mf]

Partial_sortначинаютr,м,конецrf

partial_sort_copyr1,r2[,f]

partic_sort_copyначинаютr1конецr1начинаютr2r2r2f

nth_elementr,n[,f]

n-й элементначинаютr,n,заканчиваютf]

слитьr1,r2,o[,f]

слитьначатьr1,конецr1r1,начатьr2r2of

inplace_merger,mf]

inplace_mergestartr,m,конецrf]

set_unionr1,r2,of

set_union[начинают[r1,конецr1r1,начинают[r2конецr2] []]

[[] [] [] [] [[]] [] [[]] [] [[

set_intersectionr1,r2,o[,f]

set_intersectionstartr1endr1r1startr2r2r2f

set_differencer1,r2,of]

set_differencestartr1endr1r1r1startr2r2r2f

set_symmetric_differencer1,r2,o[,f]

set_symmetric_differencestartr1,endr1r1r1,startr2r2f

push_heaprf]

push_heapstartr,endr]]

pop_heaprf]

pop_heapначатьr,конецr]

make_heapr[,f]

make_heapstartr,endr]]

sort_heapr[,f]

sort_heapstartr,endrf]

следующая_пермутацияr[,f]

следующая_пермутацияначинаетсяr,заканчиваетсяr]]

prev_permutationr[,f]

prev_permutationstartr,endrf]

внутренний_продуктr,o,a[,f1,f2]

внутренний продуктначинаютr,заканчиваютro[,f1,f2]

Partial_sumr,o[,f]

Partial_sumначинаютr,заканчиваютrof

смежное_различиеr,of]

смежное_различиеначалоr,конецrof



PrevUpHomeNext

Статья Algorithm раздела Chapter 1. Phoenix 3.2.0 STL может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: STL ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 22:30:35/0.012844085693359/1