Boost logo

Boost Users :

Subject: Re: [Boost-users] Using boost::bind with stl algorithms
From: lfrfly_at_[hidden]
Date: 2010-08-23 13:28:35

>On Mon, Aug 23, 2010 at 04:49:58PM +0100,
>> I have the following question. I have two containers
>> std::set<std::string> insertedEvents;
>> std::vector<std::string> eventNames;
>> How I would like to copy all those elements from eventNames which
are not
>> in insertedEvents. Can this can be done somehow using the
>> feature?
><algorithm> contains std::set_difference, which is most probably what
you want,
>assuming that eventNames is sorted.
>If it's not,
> std::back_inserter(out),
> boost::bind(&std::set<std::string>::count,
boost::cref(insertedEvents), _1)
>That is, bind the count member function of std::set to your set of
>events, and evaluate that for each element in your range.
>Of course, something like Phoenix or Lambda would make the predicate
>easier on the eyes.

It's worth noting that if your compiler supports C++0x lambdas (gcc
4.5+ or VS2010), then the predicate becomes
   [&insertedEvents](const std::string &s){ return
insertedEvents.find(s) != insertedEvents.end(); });
and there is no need for Boost involvement at all.

Boost-users list run by williamkempf at, kalb at, bjorn.karlsson at, gregod at, wekempf at