Я недавно задал вопрос об удалении элементов из вектора. Ну, решение, которое я получил, работает, но я не понимаю его - и я не могу найти документацию, объясняющую это.
struct RemoveBlockedHost {
RemoveBlockedHost(const std::string& s): blockedHost(s) {}
// right here, I can find no documentation on overloading the () operator
bool operator () (HostEntry& entry) {
return entry.getHost() == blockedHost || entry.getHost() == "www." + blockedHost;
}
const std::string& blockedHost;
};
для использования в качестве:
hosts.erase(std::remove_if(hosts.begin(), hosts.end(), RemoveBlockedHost(blockedhost)), hosts.end());
Я посмотрел документацию по std :: remove_if, в которой говорится, что вместо функции можно передавать класс, только когда класс перегружает оператор (). Никакой информации.
Кто-нибудь знает ссылки на:
Помощь с этим будет оценена. Мне не нравится добавлять код в мое программное обеспечение, если я его не понимаю. Я знаю, что это работает, и я знаком (в некоторой степени) с перегрузкой операторов, но я не знаю, для чего предназначен оператор ().