void stream_iter_odd_even(const string &in_file, const string &odd_file, const string &even_file) { ifstream is(in_file); ofstream os_odd(odd_file); ofstream os_even(even_file); istream_iterator<int> is_iter(is), end; ostream_iterator<int> os_odd_iter(os_odd, " "); ostream_iterator<int> os_even_iter(os_even, " "); //for_each(is_iter, end, [&](const int &num) -> void { // if(num%2) // *os_odd_iter++ = num; // else // *os_even_iter++ = num; int tmp; while(is_iter != end) { if(tmp = *is_iter++) % 2) *os_odd_iter++ = num; else *os_even_iter++ = num; } }