Алгоритмы

   
На этом шаге мы приведем общие сведения об алгоритмах.

   
Алгоритмы обрабатывают данные, содержащиеся в контейнерах. Несмотря на то, что каждый контейнер обеспечивает
поддержку собственных базовых операций, стандартные алгоритмы позволяют выполнять более расширенные или
более сложные действия. Они также позволяют работать с двумя различными типами контейнеров одновременно.
Для получения доступа к алгоритмам библиотеки STL необходимо включить в программу заголовок <algorithm>.

   
В библиотеке STL определено множество алгоритмов, которые описаны в таблице 1. Все эти алгоритмы
представляют собой шаблонные функции. Это означает, что их можно применять к контейнеру любого типа.

Таблица 1. Алгоритмы

АлгоритмНазначение
adjacent_findВыполняет поиск совпадающих смежных элементов внутри последовательности и возвращает итератор для первого найденного совпадения
binary_searchВыполняет двоичный поиск заданного значения внутри упорядоченной последовательности
copyКопирует последовательность
copy_backwardАналогичен алгоритму copy, за исключением того, что копирование происходит в обратном порядке,
т.е. сначала перемещаются элементы, находящиеся в конце последовательности
countВозвращает количество элементов с заданным значением в последовательности
count_ifВозвращает количество элементов, которые удовлетворяют заданному предикату
equalОпределяет одинаковы ли два диапазона
equal_rangeВозвращает диапазон, в который можно вставить элемент, не нарушая порядок некоторой последовательности
fill и fill_nЗаполняют диапазон заданным значением
findВ заданном диапазоне выполняет поиск заданного значения и возвращает итератор для первого вхождения найденного элемента
find_endВ заданном диапазоне выполняет поиск заданной последовательности. Возвращает итератор, соответствующий концу искомой последовательности
find_first_ofВыполняет поиск первого элемента внутри заданной последовательности, который совпадает с любым элементом из заданного диапазона
find_ifВ заданном диапазоне выполняет поиск элемента, для которого определенный пользователем унарный предикат возвращает значение true
for_eachПрименяет заданную функцию к заданному диапазону элементов
generate и generate_nПрисваивают значения, возвращаемые некоторой функцией генератором, элементам из заданного диапазона
includesУстанавливает факт включения всех элементов одной заданной последовательности в другую заданную последовательность
inplace_mergeОбъединяет один заданный диапазон с другим. Оба диапазона должны быть отсортированы в порядке возрастания. После выполнения алгоритма полученная последовательность сортируется в порядке возрастания
iter_swapМеняет местами значения, адресуемые итераторами, которые передаются в качестве параметров
lexicographical_compareСравнивает одну заданную последовательность с другой в лексикографическом порядке
lower_boundВыполняет поиск первого элемента в заданной последовательности, значение которого не меньше заданного значения
make_heapСоздает кучу из заданной последовательности
maxВозвращает максимальное из двух значений
max_elementВозвращает итератор для максимального элемента внутри заданного диапазона
mergeОбъединяет две упорядоченные последовательности, помещая результат в третью последовательность
minВозвращает минимальное из двух значений
min_elementВозвращает итератор для минимального элемента внутри заданного диапазона
mismatchВыполняет поиск первого несовпадения элементов в двух последовательностях и возвращает итераторы для этих двух элементов
next_permutationСоздает следующую перестановку заданной последовательности
nth_elementУпорядочивает заданную последовательность таким образом, чтобы все элементы, значения которых меньше значения E, размещались перед этим элементом, а все элементы, значения которых больше значения E, размещались после него
partial_sortСортирует заданный диапазон
partial_sort_copyСортирует заданный диапазон, а затем копирует столько элементов, сколько может поместиться в результирующую последовательность
partitionСортирует заданную последовательность таким образом, чтобы все элементы, для которых заданный предикат возвращает значение true, размещались перед элементами, для которых этот предикат возвращает значение false
pop_heapМеняет местами первый и предпоследний элементы заданного диапазона, а затем перестраивает кучу
prev_permutationСоздает предыдущую перестановку последовательности
push_heapПомещает элемент в конец кучи
random_shuffleПридает случайный характер заданной последовательности
remove, remove_if,remove_copy и remove_copy_ifУдаляют элементы из заданного диапазона
replace, replace_copy, replace_if и replace_copy_ifЗаменяют заданные элементы из диапазона другими элементами
reverse и reverse_copyМеняет порядок следования элементов в заданном диапазоне на противоположный
rotate и rotate_copyВыполняет циклический сдвиг влево элементов в заданном диапазоне
searchВыполняет поиск одной последовательности внутри другой
search_nВнутри некоторой последовательности выполняет поиск заданного числа подобных элементов
set_differenceСоздает последовательность, которая содержит разность двух упорядоченных множеств
set_intersectionСоздает последовательность, которая содержит пересечение двух упорядоченных множеств
set_symmetric_differenceСоздает последовательность, которая содержит симметричную разность двух упорядоченных множеств
set_unionСоздает последовательность, которая содержит объединение двух упорядоченных множеств
sortСортирует заданный диапазон
sort_heapСортирует кучу в заданном диапазоне
stable_partitionУпорядочивает заданную последовательность таким образом, чтобы все элементы, для которых заданный предикат возвращает значение true, размещались перед элементами, для которых этот предикат возвращает false. Такое разбиение является стабильным, что означает сохранение относительного порядка последовательности
stable_sortВыполняет устойчивую (стабильную) сортировку заданного диапазона. Это значит, что равные элементы не переставляются
swapМеняет местами заданные два значения
swap_rangesВыполняет обмен элементов в заданном диапазоне
transformПрименяет функцию к заданному диапазону элементов и сохраняет результат в новой последовательности
unique и unique_copyУдаляет повторяющиеся элементы из заданного диапазона
upper_boundНаходит последний элемент в заданной последовательности, который не больше заданного значения

   
На следующем шаге мы рассмотрим пример использования некоторых из перечисленных алгоритмов.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий