std::experimental::ostream_joiner
| Определено в заголовочном файле <experimental/iterator>
|
||
template< class DelimT, class CharT = char, class Traits = std::char_traits<CharT> > class ostream_joiner; |
(ТС основ библиотеки v2) | |
std::experimental::ostream_joiner однопроходный LegacyOutputIterator, который последовательно записывает объекты в объект std::basic_ostream, для которого он был создан, с использованием operator<<, разделяя их разделителем. Разделитель записывается в выходной поток между каждыми двумя записанными объектами. Операция записи выполняется, когда итератор (разыменованный или нет) присваивается. Инкремент ostream_joiner ничего не делает.
В типичной реализации единственными элементами данных ostream_joiner являются указатель на связанный std::basic_ostream, разделитель и элемент bool, указывающий, что следующая запись для первого элемента в последовательности.
По сравнению с std::ostream_iterator, ostream_joiner выводит последовательность разделителей на один меньше и не соответствует типу выводимого объекта.
Типы-элементы
| Тип-элемент | Определение |
char_type
|
CharT
|
traits_type
|
Traits
|
ostream_type
|
std::basic_ostream<CharT, Traits>
|
value_type
|
void
|
difference_type
|
void
|
pointer
|
void
|
reference
|
void
|
iterator_category
|
std::output_iterator_tag
|
Функции-элементы
создаёт новый ostream_joiner (public функция-элемент) | |
(деструктор) (объявлено неявно) |
уничтожает ostream_joiner (public функция-элемент) |
| записывает объект в ассоциированную выходную последовательность (public функция-элемент) | |
| ничего не делает (public функция-элемент) | |
| ничего не делает (public функция-элемент) |
Функции, не являющиеся элементами
создаёт объект ostream_joiner, выводя типы аргументов шаблона из аргументов функции (шаблон функции) |
Пример
#include <algorithm>
#include <experimental/iterator>
#include <iostream>
#include <iterator>
int main()
{
int i[] = {1, 2, 3, 4, 5};
std::copy(std::begin(i),
std::end(i),
std::experimental::make_ostream_joiner(std::cout, ", "));
}
Вывод:
1, 2, 3, 4, 5
Смотрите также
| итератор вывода, записывающий в std::basic_streambuf (шаблон класса) | |
| итератор вывода, записывающий в std::basic_ostream (шаблон класса) | |
| итератор ввода, читающий из std::basic_istream (шаблон класса) |