Язык программирования C++. Вводный курс


Потоковые итераторы


Стандартная библиотека предоставляет средства для работы потоковых итераторов чтения и записи совместно со стандартными контейнерами и обобщенными алгоритмами. Класс istream_iterator

поддерживает итераторные операции с классом istream или одним из производных от него, например ifstream для работы с потоком ввода из файла. Аналогично ostream_iterator

поддерживает итераторные операции с классом ostream или одним из производных от него, например ofstream для работы с потоком вывода в файл. Для использования любого из этих итераторов следует включить заголовочный файл

#include <iterator>

В следующей программе мы пользуемся потоковым итератором чтения для получения из стандартного ввода последовательности целых чисел в вектор, а затем применяем потоковый итератор записи в качестве целевого в обобщенном алгоритме unique_copy():

#include <iostream>

#include <iterator>

#include <algorithm>

#include <vector>

#include <functional>



/*

 * вход:

 * 23 109 45 89 6 34 12 90 34 23 56 23 8 89 23

 *

 * выход:

 * 109 90 89 56 45 34 23 12 8 6

 */

int main()

{

        istream_iterator< int > input( cin );

        istream_iterator< int > end_of_stream;

        vector<int> vec;

        copy ( input, end_of_stream, inserter( vec, vec.begin() ));

        sort( vec.begin(), vec.end(), greater<int>() );

        ostream_iterator< int > output( cout, " " );

        unique_copy( vec.begin(), vec.end(), output );

}



Содержание раздела