Программирование. Принципы и практика использования C++ Исправленное издание, стр. 427
{ cout << s; while (b!=e) { cout << *b; ++b; } cout << '\n';}void ff(){ int a[] = { 1,1,1,2,2,3,4,4,4,3,3,3,5,5,5,5,1,1,1 }; vector<int> v(a,a+sizeof(a)/sizeof(int)); print_digits("all: ",v.begin(), v.end()); vector<int>::iterator pp = unique(v.begin(),v.end()); print_digits("head: ",v.begin(),pp); print_digits("tail: ",pp,v.end()); pp=remove(v.begin(),pp,4); print_digits("head: ",v.begin(),pp); print_digits("tail: ",pp,v.end());}Результат приведен ниже.
all: 1112234443335555111head: 1234351tail: 443335555111head: 123351tail: 1443335555111Б.5.3. Вспомогательные алгоритмы
С формальной точки зрения вспомогательные алгоритмы также могут модифицировать последовательности, но мы считаем, что лучше их перечислить отдельно, чтобы они не затерялись в длинном списке.

Обратите внимание на то, что неинициализированные последовательности должны использоваться только на самых нижних уровнях программирования, как правило, в реализации контейнеров. Элементы, представляющие собой цели алгоритмов
uninitialized_filluninitialized_copyБ.5.4. Сортировка и поиск
Сортировка и поиск относятся к категории фундаментальных алгоритмов. В то же время потребности программистов довольно разнообразны. Сравнение по умолчанию выполняется с помощью оператора
<ab!(a<b)&&!(b<a)==
Рассмотрим следующий пример:
vector<int> v;list<double> lst;v.push_back(3); v.push_back(1);v.push_back(4); v.push_back(2);lst.push_back(0.5); lst.push_back(1.5);lst.push_back(2); lst.push_back(2.5); // список lst упорядоченsort(v.begin(),v.end()); // сортировка вектора vvector<double> v2;merge(v.begin(),v.end(),lst.begin(),lst.end(),back_inserter(v2));for (int i = 0; i<v2.size(); ++i) cout << v2[i] << ", ";Алгоритмы вставки описаны в разделе Б.6.1. В итоге получается следующий результат:
0.5, 1, 1.5, 2, 2, 2.5, 3, 4,Алгоритмы
equal_rangelower_boundupper_boundБ.5.5. Алгоритмы для множеств
Эти алгоритмы интерпретируют последовательность как множество элементов и выполняют основные операции над множествами. Входные и выходные последовательности предполагаются упорядоченными.

Б.5.6. Кучи
Куча — это структура данных, в вершине которой находится элемент с наибольшим значением. Алгоритмы над кучами позволяют программистам работать с последовательностями произвольного доступа.

Куча позволяет быстро добавлять элементы и обеспечивает быстрый доступ к элементу с наибольшим значением. В основном кучи используются при реализации очередей с приоритетами.
Б.5.7. Перестановки
Перестановки используются для генерирования комбинаций элементов последовательности. Например, перестановками последовательности
abcabcacbbacbcacabcba
Если последовательность
[b:e]cbanext_permutationxfalseabc[b:e]abcprev_permutationxfalsecbaБ.5.8. Функции min и max
Сравнение значений полезно во многих случаях.
