Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
jobster
0 / 0 / 0
Регистрация: 11.03.2014
Сообщений: 45
#1

Итераторы: зачем используется оператор инкремента для потоков вывода? - C++

10.07.2014, 11:53. Просмотров 305. Ответов 3
Метки нет (Все метки)

Хотел уточнить зачем используется оператор инкремента для потоков вывода:

C++
1
2
3
4
5
6
7
 void main(void)
{
    std::ostream_iterator<int> output(cout, " ");
    
    *output++ = 123;
    *output++ = 4;
}
Если не использовать оператор инкремента, то вывод получается точно такой же.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2014, 11:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Итераторы: зачем используется оператор инкремента для потоков вывода? (C++):

Зачем нужны итераторы? - C++
Практическое использование мне понятно - с их помощью обходят контейнеры и т.д и т.п.Но почему не реализовать нужные методы,перегрузить...

Перегрузка потоков и итераторы - C++
Здравствуйте! Не могу найти проблему... помогите пожалуйста, вот код: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;list&gt; ...

Оператор перегрузки инкремента - C++
Добрый день. Мне нужна оценка кода. Правильно - ли я все сделал? Подскажите пожалуйста. если что не так. /*Создать класс с перегрузкой...

Какой препроцессор используется для подключения стандартной библиотеки ввода-вывода? - C++
Какой препроцессор используется для подключения стандартной библиотеки ввода-вывода? 1) include 2) iostream 3) define 4) io.sys

Каким образом работает побитовое или и для чего этот оператор используется в заданном фрагменте кода? - C++
Добрый день, не сможете объяснить, каким образом работает побитовый оператор или в данном цикле и для чего он нужен? Заранее благодарен за...

Оператор вывода для иерархии - C++
Добрый вечер всем, Имеется класс Person, от него отнаследован класс Student. Есть 2 оператора чтения из потока std::istream&amp;...

3
John Prick
809 / 742 / 148
Регистрация: 27.07.2012
Сообщений: 2,122
Завершенные тесты: 3
10.07.2014, 12:08 #2
Потому что этот итератор может использоваться в обобщённых алгоритмах. Они ничего не знают об итераторе, который им передаётся, и используют инкремент итератора после каждой итерации.
0
jobster
0 / 0 / 0
Регистрация: 11.03.2014
Сообщений: 45
10.07.2014, 12:19  [ТС] #3
Вы можете привести пример к вашему комментарию, в котором есть различия при использовании и не использовании оператора инкремента для потоков вывода.

Добавлено через 57 секунд
Или в данном случае оператор инкремента используется как заглушка?
0
John Prick
809 / 742 / 148
Регистрация: 27.07.2012
Сообщений: 2,122
Завершенные тесты: 3
10.07.2014, 12:29 #4
Вот примерный код обобщённого алгоритма copy:
C++
1
2
3
4
5
6
template <class InputIterator, class OutputIterator>
OutputIterator copy(InputIterator First, InputIterator Last, OutputIterator Out)
{
    for ( ; First != Last; )
        *Out++ = *First++
}
Как видите, для вывода используется конструкци *Out++.
В этот алгоритм может быть передан как итератор вывода в поток, так любой другой итератор, соответствующий требованиям к итератору вывода:
C++
1
2
3
4
int a[4] = { 1, 2, 3, 4 };
int b[4];
copy(a, a + 4, b);
copy(a, a + 4, ostream_iterator<int>(cout, " "));
1
10.07.2014, 12:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.07.2014, 12:29
Привет! Вот еще темы с ответами:

Итераторы и итерация. Оператор >>. Простой текстовый редактор Страуструпа - C++
Добрый день! Есть код Страуструпа из Принципы и практика использования С++ Глава 20, параграф 6. Код описывает простой текстовой...

Не получается перегрузить оператор вывода для дружественной функции - C++
Не могу понять почему пытаясь перегрузить оператор вывода использую дружественную функцию, я не могу передать объект по значению, это...

Как перегрузить оператор вывода в поток для вектора? - C++
Стало интересно реализовать подобный функционал, и конечно же ничего не работает. При этом коде: template&lt;class T&gt; ...

Условный оператор, оператор ввода/вывода; плоскость и принадлежность точки - C++
Здравствуйте. В С++ я абсолютный новичок, поэтому с первым же заданием возникли определённые трудности. Будьте добры, помогите решить. Буду...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru