最近、ベクターからアイテムを削除することについて質問しました。ええと、私が得た解決策は機能しますが、私はそれを理解していません-そしてそれを説明するドキュメントを見つけることができません。
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のドキュメントを調べたところ、クラスが()演算子をオーバーロードした場合にのみ、関数の代わりにクラスを渡すことができると書かれています。情報は一切ありません。
誰かがへのリンクを知っていますか:
-
例/説明を含む本
-
または、オンラインドキュメント/チュートリアルへのリンク
これを手伝っていただければ幸いです。理解できない限り、ソフトウェアにコードを追加するのは嫌いです。私はそれが機能することを知っており、演算子のオーバーロードに(ある程度)精通していますが、()演算子が何のためにあるのかわかりません。