std::ostream_iterator
ヘッダ <iterator> で定義
|
||
template< class T, class CharT = char, |
(C++17未満) | |
template< class T, class CharT = char, |
(C++17以上) | |
std::ostream_iterator
は指定された std::basic_ostream オブジェクトに operator<<
を使用して T
型の連続するオブジェクトを書き込むシングルパスの LegacyOutputIterator です。 毎回の書き込み操作後にオプションの区切り文字列が出力ストリームに書き込まれます。 書き込み操作はイテレータが (逆参照されたかどうかにかかわらず) 代入されたときに行われます。 std::ostream_iterator
のインクリメントは何もしません。
一般的な実装では、 std::ostream_iterator
の唯一のデータメンバは紐付けられた std::basic_ostream
へのポインタと区切り文字列の最初の文字へのポインタです。
文字を書き込むとき、 std::ostreambuf_iterator は文字ごとに sentry オブジェクトを構築、破棄するオーバーヘッドを回避するため、より効率的です。
目次 |
[編集] メンバ型
メンバ型 | 定義 |
iterator_category
|
std::output_iterator_tag |
value_type
|
void |
difference_type
|
void |
pointer
|
void |
reference
|
void |
char_type
|
CharT
|
traits_type
|
Traits
|
ostream_type
|
std::basic_ostream<CharT, Traits> |
メンバ型 |
(C++17未満) |
[編集] メンバ関数
新しい ostream_iterator を構築します (パブリックメンバ関数) | |
ostream_iterator を破棄します (パブリックメンバ関数) | |
紐付けられた出力シーケンスにオブジェクトを書き込みます (パブリックメンバ関数) | |
何もしません (パブリックメンバ関数) | |
何もしません (パブリックメンバ関数) |
[編集] 例
#include <iostream> #include <sstream> #include <iterator> #include <numeric> int main() { std::istringstream str("0.1 0.2 0.3 0.4"); std::partial_sum(std::istream_iterator<double>(str), std::istream_iterator<double>(), std::ostream_iterator<double>(std::cout, " ")); }
出力:
0.1 0.3 0.6 1
[編集] 関連項目
std::basic_streambuf に書き込む出力イテレータ (クラステンプレート) | |
std::basic_istream から読み込む入力イテレータ (クラステンプレート) | |
(library fundamentals TS v2) |
隣接するオブジェクトを区切り文字で分離しながら連続する要素を出力ストリームに書き込む出力イテレータ (クラステンプレート) |