ostream_iterator
ある vector
要素をアルゴリズムを使ってストリームに適用させたいときがある。例えば、自分で作った型 Vec
(vector と紛らわしいな)があって、これは std::ostream& operator<<(std::ostream& stream, Vec v)
を持っている。このとき vector<Vec> a
を全部表示したい。
方法 1 (for
)
for(size_t i=0; i<a.size(); ++i) { std::cout << a[i] << std::endl; }
方法 2 (for_each
)
void Print(Vec a)
{
std::cout << a << std::endl;
}
std::for_each(a.begin(), a.end(), Print());
方法 3 (ostream_iterator
)
std::copy(a.begin(), a.end(), std::ostream_iterator<Vec>(std::cout, "\n"));