私はちょうどそれを見始めたので、C++ とそのコア ライブラリに慣れるための簡単なプログラムを書いています。
C++ std::find に続いて、カスタム コンパレータで受け入れられた回答 ( https://stackoverflow.com/a/14322617/611901 ) を書きました
struct special_compare : public std::unary_function<composerRating, bool>
{
explicit special_compare(size_t id) : id_(id) {}
bool operator() (const composerRating &cr_arg) const {
return cr_arg.composerID == id_;
}
size_t id_;
};
vector<composerRating>::iterator crIter = find_if(ratings.begin, ratings.end(), special_compare(ID));
しかし、コンパイラは、find_if
この種の引数を取らないと不平を言います。bind を使用している他の回答を見ましたが、クラス (構造体) 自体を渡しているときに、クラスのメンバーを呼び出す必要があるときに使用されます。さらに、数行のプログラムを書いているだけで、 std::bind が関数の範囲内になく、バインドライブラリが見つからないため、ブーストの使用は避けたいと思います。
問題を解決するにはどうすればよいですか?