いくつかの調査を行った後、私はstd::sort
で何が問題になるのかを尋ねました。std :: sortを正しく実行できません
Oliver Charlesworthのアドバイスhereから私は比較を作成しました。アルゴリズムヘッダーを含め、自分の機能にstd::sort
という名前を付けました。私はまだエラーが発生しています。おそらく、おそらく見落としですが。
エラー:
エラーC2780のボイドのstd ::ソート(_RanIt、_RanItは) ':2つの引数を期待 - 3が提供
エラーC2672 'のstd ::ソート':見つかりませマッチング、オーバーロード機能
エラーC3867 'ImageEvaluator :: comparator':非標準構文。使用 '&' メンバへのポインタを作成する
構造体:
struct numLocWidth
{
int width;
int number;
int location;
};
比較:
bool comparator(const numLocWidth &a, const numLocWidth &b)
{
return a.location < b.location;
}
機能:
if (tempMax > minAcceptableValue)
{
tempLocAndVal.location = max_Pot_Loc.x;
tempLocAndVal.number = i - 1;
tempLocAndVal.width = templates[7][i].size().width;
foundNumbers.push_back(tempLocAndVal);
std::sort(foundNumbers.begin(), foundNumbers.end(), comparator);
}
ここで何が起こっているかわかりません私の頭を傷つけているfまたはビット。私は自分のソート関数を書くことができますが、私はこの方法がより効率的になると確信しています。
それはcomparator' 'のように見えるためには、非静的クラスのメンバ関数です。静的または非メンバーにします。 – VTT
[MCVE](https://stackoverflow.com/help/mcve)を参照してください。 –
十分な情報を提供していません。エラーメッセージから、 'comparator()'はあるクラスの非静的メンバー関数であるようです。コンパレータを3番目の引数として受け入れる 'std :: sort()'の変種は、コンパレータがバイナリ関数(つまり、クラスの静的メンバか、必要な引数を受け入れる非メンバ関数)を必要とします。 – Peter