int main() { int x[] = { 1, 2, 3, 4, 5, 6, 7, 8 }; const int N = sizeof(x)/sizeof(int); vector<int> v(x, x+N); std::cout << "squaring each element in the array:" << std::endl; auto transformer = make_adaptor(square); std::copy(transformer(v.begin()), transformer(v.end()), std::ostream_iterator<int>(std::cout, " ")); std::cout << std::endl; std::cout << "adding 3 to each element in the array:" << std::endl; auto transformer2 = make_adaptor(bind(add, placeholders::_1, 3)); std::copy(transformer2(x), transformer2(x+N), std::ostream_iterator<int>(std::cout, " ")); std::cout << std::endl; using boost::make_transform_iterator; std::cout << "adding 5 to each element in the array:" << std::endl; std::copy( make_transform_iterator(x, bind(add, placeholders::_1, 5)), make_transform_iterator(x+N, bind(add, placeholders::_1, 5)), std::ostream_iterator<int>(std::cout, " ")); std::cout << std::endl; }
int main(){ using counter=boost::counting_iterator<int>; std::vector<int> v(counter{1},counter{11}); std::ostream_iterator<int> out{std::cout,", "}; copy(v.begin(),v.end(),out); std::cout << '\n'; using boost::make_filter_iterator; copy(make_filter_iterator(odd{},v.begin(),v.end()), make_filter_iterator(odd{},v.end(),v.end()), out); std::cout << '\n'; using boost::make_transform_iterator; auto sq=[](auto i){return i*i;}; //using std::placeholders::_1; //auto sq=bind(std::multiplies<int>{},_1,_1); copy(make_transform_iterator(v.begin(),sq), make_transform_iterator(v.end(),sq), out); }