std::experimental::ostream_joiner
From cppreference.com
< cpp | experimental
| ヘッダ <experimental/iterator> で定義 |
||
| template< class DelimT, |
(Library Fundamentals TS v2) | |
std::experimental::ostream_joinerは、構築時に渡されたstd::basic_ostreamオブジェクトに、区切り文字で区切られた連続したオブジェクトをoperator<<を使って書き込む、シングルパスの出力イテレータ (LegacyOutputIterator) です。区切り文字は、書き込まれる2つのオブジェクトの間にそれぞれ出力ストリームに書き込まれます。書き込み操作は、イテレータ(間接参照されているかどうかにかかわらず)に代入されたときに行われます。ostream_joinerのインクリメントは何も行いません。
典型的な実装では、ostream_joinerのデータメンバは、関連付けられたstd::basic_ostreamへのポインタ、区切り文字、そして次の書き込みがシーケンスの最初の要素であるかどうかを示すbool型のメンバだけです。
std::ostream_iteratorと比較して、ostream_joinerは区切り文字シーケンスを1回少なく出力し、出力するオブジェクトの型でテンプレート化されていません。
目次 |
[編集] メンバ型
| メンバ型 | 定義 |
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を構築する(公開メンバ関数) | |
| (デストラクタ) (暗黙的に宣言) |
ostream_joinerを破棄する(公開メンバ関数) |
| 関連付けられた出力シーケンスにオブジェクトを書き込む (公開メンバ関数) | |
| 何も行わない (公開メンバ関数) | |
| 何も行わない (公開メンバ関数) |
[編集] 非メンバ関数
関数引数からテンプレートの型引数を推論して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 から読み取る入力イテレータ (クラステンプレート) |