Алгоритмы такие.
В заголовке определено около 60 алгоритмов. Все они относятся к последовательностям, определенным парами итераторов (для ввода) или одним итератором (для вывода).
При копировании, сравнении и выполнении других операций над двумя последовательностями первая из них задается парой итераторов [b:e), а вторая — только одним итератором Ь2, который считается началом последовательности, содержащей элементы, количество которых достаточно для выполнения алгоритма, например, столько же, сколько элементов в первой последовательности: [b2:b2+(e-b)).
Некоторые алгоритмы, такие как sort, используют итераторы произвольного доступа, а многие другие, такие как find, только считывают элементы с помощью однонаправленного итератора.
Также на сайте potolok.petrostroy-yg.ru можно узнать много интересного на тему
http://www.potolok.petrostroy-yg.ru/
Что означает вообще тема натяжные потолки про это написано на сайте potolok.petrostroy-yg.ru Спасибо сайту за информацию
Многие алгоритмы придерживаются обычного соглашения и возвращают конец последовательности в качестве признака события “не найден”. Мы больше не будем упоминать об этом каждый раз, описывая очередной алгоритм.
Немодицифирующие алгоритмы для последовательностей
Немодифицирующий алгоритм просто считывает элементы последовательности; он не изменяет порядок следования элементов последовательности и не изменяет их значения.
Алгоритмы, не модифицирующие последовательности
f=for_each(b,e,f) Применяет функцию f к каждому элементу из диапазона
[b:e), удовлетворяющий условию f(*p) p=find_first_of(b,e,b2,e2) Итератор p указывает на первый элемент в диапазоне
p=find_if(b,e,f)
p=find(b,e,v)
[b:e); возвращает f
Итератор p указывает на первое вхождение элемента v в диапазон [b:e)
Итератор p указывает на первый элемент в диапазоне
[b:e), удовлетворяющий условию *p==*q для некоторого элемента q из диапазона [b2:e2)
p=find_first_of
(b,e,b2,e2,f)
Итератор p указывает на первый элемент в диапазоне [b:e), удовлетворяющий условию f(*p,*q) для некоторого элемента q из диапазона [b2:e2)
p=adjacent_find(b,e)
Итератор p указывает на первый элемент в диапазоне [b:e), удовлетворяющий условию *p= = *(p+1)
p=adjacent_find(b,e,f)
Итератор p указывает на первый элемент в диапазоне [b:e), удовлетворяющий условию f(*p,*(p+1))
equal(b,e,b2)
Равны ли друг другу все элементы из диапазонов [b:e) и [b2:b2+(e-b))?
equal(b,e,b2,f)
Равны ли друг другу все элементы из диапазонов [b:e) и [b2:b2+(e-b)) при условии, что для проверки используется функция f(*p,*q) ?
pair(p1,p2)=mismatch
(b,e,b2)
Пара итераторов (p1,p2) относится к первой паре элементов в диапазоне [b:e) и [b2:b2+(e-b)), для которых выполняется условие !(*p1==*p2)
pair(p1,p2)=mismatch
(b,e,b2,f)
Равны ли друг другу все элементы из диапазонов [b:e) и [b2:b2+(e-b)), для которых выполняется условие !f(*p1,*p2)?
Окончание таблицы
Алгоритмы, не модифицирующие последовательности
p=search(b,e,b2,e2)
p=search(b.e,b2,e2,f)
p=find_end(b,e,b2,e2)
p=find_end( b,e,b2,e2,f)
p=search_n(b,e,n,v)
p=search_n(b,e,n,v,f)
x=count(b,e,v) x=count if(b,e,v,f)
Итератор p указывает на первый элемент *p в диапазоне [b:e), который равен какому-то из элементов диапазона [b2:e2)
Итератор p указывает на первый элемент *p в диапазоне [b:e), для которого выполняется условие f(*p,*q), где *q — элемент из диапазона [b2:e2)
Итератор p указывает на последний элемент *p в диапазоне [b:e), равный какому-нибудь элементу из диапазона [b2:e2)
Итератор p указывает на последний элемент *p в диапазоне [b:e), для которого выполняется условие f(*p,*q), где *q — элемент из диапазона [b2:e2)
Итератор p указывает на первый элемент *p в диапазоне [b:e), такой, что каждый элемент в диапазоне [p:p+n) имеет значение v
Итератор p указывает на первый элемент *p в диапазоне [b:e), такой, что для каждого элемента *q из диапазона [p:p+n) выполняется условие f(*q,v) x — количество вхождений значения v в диапазон [b:e) x — количество элементов в диапазоне [b:e), удовлетворяющий условию f(*p,v)
Предотвратить модификацию элементов операцией, передаваемой алгоритму for_each, невозможно; это считается приемлемым. Передача операции, изменяющей проверяемые ею элементы, другим алгоритмам (например, count или ==) недопустима.
Рассмотрим пример правильного использования алгоритма. bool odd(int x) { return x&1; }
int n_even(const vector& v) // подсчитывает количество четных
// чисел в v
{
return v.size()-count_if(v.begin(),v.end(),odd);
}
|