コンテナの要素をセパレータで連結して表示したい
3 Jun, 00:05 update/ ファンクタの引数がintになってたのを修正、ostream_iteratorのcharTをostreamのcharTに合わせて指定するようにした (thanks for id:SubaruG)
#include <iterator> #include <numeric> #include <iosfwd> template <typename charT, typename Traits, typename Sep, typename Iter> inline std::basic_ostream<charT, Traits> &listed_print(std::basic_ostream<charT, Traits> &s, const Sep &sep, Iter first, Iter last) { typedef typename std::iterator_traits<Iter>::value_type T; std::partial_sum( first, last, std::ostream_iterator<T, charT, Traits>(s), [&](const T &, const T &n) { return s << sep, n; }); return s; }; #include <iostream> #include <vector> int main() { const std::vector<int> v{ 0, 1, 2, 3, 4 }; listed_print(std::wcout, L',', v.begin(), v.end()); }
実行結果
0,1,2,3,4