вівторок, 3 березня 2009 р.

Узагальнення ітераторів

Категорії ітераторів:

Категорія - Можливості - Підтримка

Ітератор вводу - читання в прямому напрямку - Потоковий Ітератор вводу.

Ітератор виводу - Запис в прямому напрямку - Потоковий Ітератор виводу, ітератор вставки.

Прямий ітератор  - Читання і запис в прямому напрямку

Двонаправлений ітератор - Читання і запис в оберненому напрямках -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

Немає коментарів:

Дописати коментар

Прихильники