// Clever technique for comparing functions: Replace the comparison functions with classes that overload the () operator.
# Include <vector>
# Include <string>
# Include <algorithm>
Using namespace STD;
Class cmpclass
{
Public:
Cmpclass (string strequalvalue)
{
M_strequalvalue = strequalvalue;
}
Inline bool operator () (const string & Str)
{
Return STR = m_strequalvalue;
}
PRIVATE:
String m_strequalvalue;
};
Int _ tmain (INT argc, _ tchar * argv [])
{
String str1 = "str! 001 ";
String str2 = "str! 002 ";
Vector <string> vecname;
Vecname. push_back (str1 );
Vecname. push_back (str2 );
// In the generic algorithm find_if, when a comparison function is required, a class with the () operator overloaded is passed in for more convenient implementation.
// The following algorithm finds the entry whose value is str2 from the container vecname and returns the iterator of the Entry
Vector <string >:: iterator iter = find_if (vecname. Begin (), vecname. End (), cmpclass (str2 ));
If (ITER! = Vecname. End ())
{
Printf ("% S/R/N", (* ITER). c_str ());
}
Return 0;
}