ポインタの配列のオブジェクトがメンバ関数に与えられたパラメータと同じ名前(メンバ変数)を持つ回数を数える必要があります。私はさまざまなアプローチを試みましたが、どれも働いていませんでした。私のコードはコンパイルされません。エラーは次のとおりです。「エラーC2514: 'MyComparator':クラスにコンストラクタがありません」ここでは、concurenciesのカウントに使用される比較と関数に使用するクラスのコードを示します。オブジェクトのポインタのベクトルにSTLアルゴリズムを使用する(C++)
//definition of the vector
vector<Class1*> files;
...
int Class2::countNames(string name)
{
return count_if(files.begin(), files.end(), bind2nd(MyComparator(),name));
}
...
class MyComparator{
public:
bool operator()(const CFileType*& ob1, const string &str)
{
return ob1->getName()==str;
}
};
私は時間のためにこれで苦労していると私は、STLを使用して、それをしたいです。ここでのキャッチは、私はポインタのベクトルを持っている、私はそれがパラメータを与える必要があり、私はbind2nd()が正しい方法だと思う、述語関数を必要としない法線ベクトルを持っていた場合。どんな助けでも大歓迎です!
ありがとうございます、それは完璧に動作し、** bold ** bind2nd()** bold ** – Goshutu
@Goshutuを使用するよりはるかにコンパクトです参照してベクトルを渡すのを忘れました(編集を参照してください) 。これは正確さには影響しませんが、 'CountMatchingNames'への呼び出しごとにベクトルをコピーする必要がなくなるため、パフォーマンスに影響します。 –
これはクラス – Goshutu