Форум программистов, компьютерный форум CyberForum.ru

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

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

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

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

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

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

C++ Оператор вывода для иерархии
Перехват потоков ввода/вывода C++
C++ Зачем нужны итераторы?
Итераторы и итерация. Оператор >>. Простой текстовый редактор Страуструпа C++
Перегрузка потоков и итераторы C++
Оператор cin. Задать ширину для вывода нескольких значений C++
Не получается перегрузить оператор вывода для дружественной функции C++
C++ Какой препроцессор используется для подключения стандартной библиотеки ввода-вывода?
C++ Оператор перегрузки инкремента
C++ Переписать программу так, чтобы для вывода на экран каждого операнда использовался отдельный оператор
Каким образом работает побитовое или и для чего этот оператор используется в заданном фрагменте кода? C++
Как перегрузить оператор вывода в поток для вектора? C++

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

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

Добавлено через 57 секунд
Или в данном случае оператор инкремента используется как заглушка?
John Prick
764 / 697 / 126
Регистрация: 27.07.2012
Сообщений: 1,988
Завершенные тесты: 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, " "));
Yandex
Объявления
10.07.2014, 12:29     Итераторы: зачем используется оператор инкремента для потоков вывода?
Ответ Создать тему
Опции темы

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