Boost logo

Boost :

From: Michael Goldshteyn (mgoldshteyn_at_[hidden])
Date: 2005-03-08 17:26:46


Given:

// Definitions

class Element
{
public:
  const std::string &GetTag() const;
};

typedef std::vector<Element> ElementContainer;

// Now here is what is required

ElementContainer elements;
...
ElementContainer matchingElements;
std::string matchingTag("abc");

copy_if(elements.begin(),elements.end(),back_inserter(matchingElements)),pred);

--
What is pred? Assuming that iElements represents the iterator inside 
copy_if, pred should be something like: iElements->GetTag()==matchingTag
I could go about this by creating a new function object class/struct, which 
takes matchingTag as its sole constructor argument and does the comparison 
inside operator(). But, I want to use in place composition using binders, 
etc... to create the pred, so as not to have to create a function object 
class/struct. The question is, "What piece of code should pred be?"
// Almost does the right thing, but it's only *iElements==matchingTag, I 
need iElements->GetTag()==matchingTag
bind_2nd(equal_to,matchingTag)
This seems like a very common operation. How can I compose the predicate, in 
place to do this? If there are multiple solutions, I would like to hear them 
as well!
Thanks,
Michael

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk