Введение Применение итераторов Типы итераторов Итераторы потоков Предикаты Обзор алгоритмов Концепты Алгоритмы над контейнерами Параллельные алгоритмы Советы
Не преумножайте сущности |
сверх необходимости. |
- |
Уильям Оккам |
упорядочения используется
sort(vec.begin(),vec.end());
unique_copy(vec.begin(),vec.end(),lst.begin());
Чтобы этот код работал, для типа Entry торы меньше (<) и равно (==). Например:
bool |
operator<(const |
Entry& |
{ |
|
|
|
11 Упорядочение |
записей |
|
return x.name<y.name; |
сколько уникальных значений в vec.
Если бы мы хотели разместить уникальные то могли бы написать
list<Entry> res; |
|
sort(vec.begin(),vec.end() |
11 Добавление к |
res: |
unique_copy(vec.begin(),vec.end(),back_inserter(res)); return res;
218 |
Глава 12. |
Алгоритмы |
|
|
ofstream os |
{to); |
|
|
ostream_iterator<string> |
oo{os,"\n"); |
// Поток вывода в файл //Выходной итератор
// Ь |
- вектор, |
инициализированный |
vector<string> |
Ь {ii,eos); |
sort |
(b.begin () |
,b.end()); |
входными данными:
11 Сортировка
Копирование буфера в выходной с отбрасыванием повторяюШ;1хся
unique_copy(b.begin(),b.end(),oo);
// Возврат состояния |
ошибки |
return !is.eof() |
11 |
!os; |
граничения выходных значений.
На самом деле эта программа
set<string> Ь {ii,eos); copy(b.begin(),b.end(),oo);
// Сбор |
строк |
из |
//Вывод |
строк |
в |
|
Мы используем |
имена ii, |
eos |
можно сократить еще сильнее: |
|
int |
main () |
|
|
string |
from, |
to; |
|
// |
Получение |
имен |
входного |
cin |
>> |
from |
>> to; |
|
Входной |
поток для |
файла |
Выходной |
поток для |
файла |
{istream_iterator<string>{is), istream_iterator<string>{));
copy(b.begin(),b.end(),ostream_iterator<string>{os,"\n"));