コンテナの要素をセパレータで連結して表示したい

にあるアルゴリズムが便利すぎます…

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