How to slice with for-range loop ? C++0x

c++, c++11

Solution

You can use the "sliced" range adaptor from the Boost.Range library:

#include <boost/range/adaptor/sliced.hpp>

using boost::adaptors::sliced;

...

std::vector<int> numbers = generateNumbers();
for( int k : numbers | sliced(0, numbers.size() / 2))
{
     processNumber( k );
}   

Problem

Using range based for loops in C++0X, I know we'll be able to do : ``` std::vector<int> numbers = generateNumbers(); for( int k : numbers ) { processNumber( k ); } ``` (might be even simpler to write with lambda) But how should i do if I only want to apply processNumber( k ) to a part of numbers? For example, how should I write this for loop for to apply processNumber() to the half (head or tail) of the numbers? Is "slicing" allowed like in Python or Ruby?

Original source

Related problems