$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
From: Christian Rössel (christian.roessel_at_[hidden])
Date: 2006-09-08 05:03:32
Baranowski, Daniel schrieb:
> Hey all!
> 
> I've really enjoyed using boost::bind for calling member functions and
> such. I wish I had found this earlier!
> 
> Anyhow, I'm trying to write for_each statement that only passes the
> object to a function if certain conditions are met. Unfortunately, I'm
> not well versed enough in boost::bind (and I've never used the lambda
> library) so I'm not sure how to do this! Can someone lend me a hand? I
> couldn't find anything in the mail archives.
> 
> If I were writing a regular for-loop, this is how it would look:
>    vector<MyObjClass> myVector;
>    myVector.push_back(MyObjClass(2));
>    myVector.push_back(MyObjClass(3));
>    myVector.push_back(MyObjClass(3));
>    myVector.push_back(MyObjClass(5));
>    myVector.push_back(MyObjClass(6));
> 
>    vector<MyObjClass>::iterator end = myVector.end();
>    vector<MyObjClass>::iterator itr;
>    for(itr = myVector.begin(); itr != end; ++itr)
>    {
>       if((*itr).GetValue() == 3)
>          ProcessingFunction(*itr);
>    }
> 
> And here's the for_each that just passes every object into the
> processing function:
>    // From inside a function in a class called ThisClass
>    vector<MyObjClass> myVector;
>    myVector.push_back(MyObjClass(2));
>    myVector.push_back(MyObjClass(3));
>    myVector.push_back(MyObjClass(3));
>    myVector.push_back(MyObjClass(5));
>    myVector.push_back(MyObjClass(6));
> 
>    vector<MyObjClass>::iterator begin = myVector.begin();
>    vector<MyObjClass>::iterator end = myVector.end();
>    
>    for_each(begin, end, 
>       boost::bind(&ThisClass::ProcessingFunction, this, _1));
> 
> So I guess the question is, how do I add the condition into the
> for_each? I know there's got to be a way!
Hi Daniel,
I think you can solve your problem with a boost::filter_iterator which
implements your condition. Then, pass this iterator(s) to for_each.
Have fun,
Christian