デバッグ出力に役立つ ostream_joiner とは
こんにちは.
今日は C++ コンテナの中身を簡単にデバッグ出力できる ostream_joiner を紹介します.
ostream_joiner は experimental/iterator をインクルードすることで, std::experimental::ostream_joiner として使えるようになります.
#include <experimental/iterator> #include <vector> #include <iostream> using namespace std; using namespace experimental; ostream_joiner<const char *> debug = make_ostream_joiner(cout, " "); int main(){ vector<int> v = {1, 2, 3, 4, 5}; copy(v.begin(), v.end(), debug); cout << endl; }
これで
1 2 3 4 5
と出力されます. make_ostream_joiner の第 2 引数で " " の代わりに ", " を指定すればカンマ区切りになります(最後の要素の後にカンマは入りません).
set とかもいけます.
set<int> s; s.insert(5); s.insert(2); s.insert(3); s.insert(1); s.insert(4); copy(v.begin(), v.end(), debug); cout << endl;
出力は同じく
1 2 3 4 5
です.
わりと便利そう.