Hey everybody,
Could somebody please provide an example for using the STL find_if for the following task. I am trying to search a vector of structs, using the following criteria: compare whether the key of the struct in the vector matches the key of another struct (instace of the same type of struct) that I want to find. So basically search the vector for a particular struct. I want to use find_if, in order to replace the handwritten routine I have now. I have seen many complex, examples online. If anybody knows of simple and clean way, please share. Thanks in advance.

Recommended Answers

All 2 Replies

Member Avatar for iamthwee

Loop through the vector of objects, if that object matches the one in hand return a success message?

#include <vector>
#include <algorithm>

struct some_struct { int key ; /* ... */ };

struct has_same_key
{
  explicit ( const some_struct& s ) : what(s) {}
  bool operator() ( const some_struct& elem ) const
  { return elem.key == what.key ; }
  const some_struct& what ;
};

inline std::vector<some_struct>::const_iterator 
   do_find( const std::vector<some_struct>& vec, const some_struct& what )
{
  return std::find_if( vec.begin(), vec.end(), has_same_key(what) ) ;
}
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.