Категорії ітераторів:
Категорія - Можливості - ПідтримкаІтератор вводу - читання в прямому напрямку - Потоковий Ітератор вводу.
Ітератор виводу - Запис в прямому напрямку - Потоковий Ітератор виводу, ітератор вставки.Прямий ітератор - Читання і запис в прямому напрямку
Двонаправлений ітератор - Читання і запис в оберненому напрямках -list, map, mulimap, set, multiset.Ітератордовільного доступу - Читання і запис з довільним доступом - vector, deque, string, array
Ітераторні адаптери:
Обернені ітератори - адаптери, що перевизначають оператори ++ та -- так щоб пошук виконувався в оберненому порядку.
Ітератори вставки - адаптер, що перетворює присвоєння нового значення у вставку нового значення. Бувають: Кінцеві (додає нове значення в кінець контейнера викликом функції push_back()), Початкові (вставляє нове значення в початок контейнера викликом функції push_front()), Загальні (на основі функції insert()).
Потокові ітератори - адаптер, що використовує поток в якості джерела або приймача алгоритму. Потокові ітератопи виводу записують значення що присвоюється у вихідний потік даних. Потокові ітератопи вводу читають елементи з вхідного потоку даних.
Цікавий приклад потокових ітераторів:
Програма читає слова із стандартного потоку вводу і виводить їх у відсортованому порядку виключаючи дублікати.
#include < iostream>
#include < vector>
#include < string>
#include < algorithm>
using namespace std;
int main()
{
vector < string> coll;
// читання слів з вхідного потоку даних
copy (istream_iterator < string> (cin), // початок джерела
istream_iterator < string> (), // кінець джерела
back_inserter(coll)); // приймач
sort (coll.begin(), coll.end());
unique_copy(coll.begin(), coll.end(), // джерело
ostream_iterator < string> (cout, "\n"));// приймач
}
Матеріал взято із книги Nicolai M.Josuttis The C++ Standard Library
Немає коментарів:
Дописати коментар