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() defined
foo(); // 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 <algorithm>
#include <iostream>
#include <string>
#include <vector>
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<string> vec(3); // vector of three elements
vec[0] = "sir";
vec[1] = "zebra";
vec[2] = "home";
vector<string>::iterator iter =
find_if(vec.begin(), vec.end(), starts('z'));
cout << *iter << "\n";
return 0;
}