Listing 2

#include <boost/rangelib/rtl.hpp>
#include <boost/rangelib/algo.hpp>
#include <vector>
#include <map>
using namespace boost::rangelib;

int main() {
    typedef std::vector<int> array;
    array numbers; numbers.resize(512);
    rng::generate(numbers, rand);
    // add previos number to each number
    for ( crange<array> r(numbers); r; ++r) 
        if ( r.begin() != numbers.begin() ) *r += r[-1];
    typedef std::map<int,int> coll;
    // for each number, how many times it's found in the array
    coll vals;
    for ( crange<array> r(numbers); r; ++r) 
        ++vals[ *r];
    // erase even numbers
    for ( crange<coll> r(vals); r; ++r)
        if (r->first % 2 == 0) 
            r = erase_current(v, r);
}