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);
}