Для пользователей, которые регистрируются. Если Вам не приходит письмо с подтверждением email, пишите на admin[at]quizful[dot]net - будем подтверждать вручную. Просим прощения за доставленные неудобства.

С уважением,
команда Quizful
Знаете ли Вы, что

После прохождения теста можно комментировать вопросы теста, а Ваши комментарии увидят модераторы теста и пользователи, которым когда-либо эти вопросы попадались.

Топ контрибуторов
loading
loading
Лента обновлений
ссылка May 17 19:13
Комментарий от elirijndael:
Полностью согласен с valid_name.
ссылка May 17 18:47
Комментарий от Aleksandr89:
Неплохой тест. Для тех кто хочет ещё попрактиковатьс...
ссылка May 17 15:13
Комментарий от dpdpdp:
Поменяйте радиокнопки на чекбоксы.
Во втором варианте про...
ссылка May 17 11:55
Комментарий от Torredo812:
вот это подвох!!!
забываешь что х увеличился))и думае...
ссылка May 17 10:50
Комментарий от lesha1980:
Хороший вопрос. Получается, что проверяется только x в...
Статистика

Тестов: 130, вопросов: 5791. Пройдено: 126748 / 526543.

Итератор потока STL

Автор: QQQ  к списку      

Вопрос
Что из себя представляет итератор потока в STL? Назовите его виды, подвиды.
Ответ

Важную роль в STL играют итераторы потоков, которые делятся на итераторы потоков ввода и вывода. Практически итератор потока вывода используется для отображения данных на экране. Суть применения потоковых итераторов в том, что они превращают любой поток в итератор, используемый точно так же, как и прочие итераторы: перемещаясь по цепочке данных, считывает значения объектов и присваивает им другие значения. (Действуют по системе шаблона - подставляют("определяют") переменные в определенную конструкцию).

Итератор потока ввода — это удобный программный интерфейс, обеспечивающий доступ к любому потоку, из которого требуется считать данные. Конструктор итератора имеет единственный параметр — поток ввода. А поскольку итератор потока ввода представляет собой шаблон, то ему передается тип вводимых данных. Вообще-то должно передаваться четыре типа, но последние три имеют значения по умолчанию, и вряд ли вы решитесь их изменять прежде, чем досконально изучите STL. Каждый раз, когда нужно ввести очередной элемент информации, используйте оператор ++ точно так же, как с основными итераторами. Считанные данные можно узнать, если применить разыменовывание (*).

Итератор потока вывода весьма схож с итератором потока ввода, но у его конструктора имеется дополнительный параметр, которым указывают строку-разделитель, добавляемую в поток после каждого выведенного элемента. Ниже приведен пример программы, читающей из стандартного потока cin числа, вводимые пользователем и дублирующие их на экране, завершая сообщение строкой “ — new data“. Работа программы заканчивается, как только пользователь введет число 33:


#include <algorithm>
#include <iostream>
#include <vector>

using namespace std;

int main() {
    istream_iterator<int> is (cin);
    ostream_iterator<int> os  (cout, " — new data");

    int input;

    while  ((input = *is) != 33) {
        *os++ = input;
        is++ ;
    }
}
Потоковые итераторы имеют одно существенное ограничение — в них нельзя возвратиться к предыдущему элементу. Единственный способ сделать это - заново создать итератор потока.

Если Вам понравился вопрос, проголосуйте за него

Голосов: 2  loading...
art   lestat88