0

私はちょうどそれを見始めたので、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 が関数の範囲内になく、バインドライブラリが見つからないため、ブーストの使用は避けたいと思います。

問題を解決するにはどうすればよいですか?

4

0 に答える 0