An object function is a regular C++ object whose class defines the () operator. An object with a () operator can be called like a function:
CFoo foo; // just an object whose class has operator() definedfoo(); // like a function; makes operator() work
You can use an object function to find the first occurence of a string started by a given symbol in a vector:
#include #include #include #include using namespace std;class starts { char ch;public: starts(char c) : ch(c) {} bool operator() (const string &s) { return s.size() && s[0] == ch; }};int main(){ vector vec(3); // vector of three elements vec[0] = "sir"; vec[1] = "zebra"; vec[2] = "home"; vector::iterator iter = find_if(vec.begin(), vec.end(), starts('z')); cout << *iter << "
"; return 0;}