
#include <algorithm>
#include <iostream>
#include <vector>
#include <iterator>
#include <numeric>
int main()
{
std::vector<int> from_vector(10);
std::iota(from_vector.begin(), from_vector.end(), 0);
std::vector<int> to_vector;
std::copy(from_vector.begin(), from_vector.end(),
std::back_inserter(to_vector));
std::cout << "to_vector contains: ";
std::copy(to_vector.begin(), to_vector.end(),
std::ostream_iterator<int>(std::cout, " "));
std::cout << '\n';
std::cout << "odd numbers in to_vector are: ";
std::copy_if(to_vector.begin(), to_vector.end(),
std::ostream_iterator<int>(std::cout, " "),
[](int x) { return (x % 2) == 1; });
std::cout << '\n';
}
说明
ostream_iterator写入元素的迭代器。
ostream_iterator用于向输出流ostream(如cout)中写入连续的元素。所以可以如下定义一个ostream_iterator:
std::ostream_iterator<double> oit (std::cout);
也可以在上述构造函数中加入分隔符,如下:
std::ostream_iterator<double> oit (std::cout, ", ");