Это называется функтором (не путать с функтором в функциональных языках программирования).
Он имитирует функцию и может быть использован в качестве таковых функций из стандартной библиотеки:
std::vector<Result> collection;
// fill with data
// Sort according to the() operator result
sortResults sort;
std::sort(collection.begin(), collection.end(), sort);
хорошее преимущество по сравнению с простыми функциями, является то, что он может держать состояние, переменный и т.д. Вы можете (если это колеблется)
struct GreaterThan{
int count;
int value;
GreaterThan(int val) : value(val), count(0) {}
void operator()(int val) {
if(val > value)
count++;
}
}
std::vector<int> values;
// fill fill fill
GreaterThan gt(4);
std::for_each(values.begin(), values.end(), gt);
// gt.count now holds how many values in the values vector are greater than 4
Сортировка Сортировка; Сортировщик (resA, resB); ' – Borgleader
Тип дубликата: [C++-функторы - и их использование] (http://stackoverflow.com/q/356950/420683) – dyp