Example #1
0
File: main.cpp Project: CCJY/coliru
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);
}