qsort と比較するためのインライン関数を作成しようとしています-次のようなものです:
function<int(int,int)> comparesort = [smarkers, emarkers, strSearch] (int *arg1, int *arg2) { return 0; };
qsort(sortptrs, nKeywords, sizeof(int), comparesort);
それは私にこのエラーを与えています
IntelliSense: "std::tr1::function" から "int (__cdecl *)(const void *, const void *)" への適切な変換関数が存在しません
わかりました-これに変更しました
auto comparesort = [sortptrs, smarkers, emarkers, strSearch] (int arg1, int arg2)
{
int a = 0;
.
.
.
return a;
};
std::sort(sortptrs, sortptrs + nKeywords, comparesort);
そしてそれはエラーを出しています:
エラー C3499: void 戻り値の型を持つように指定されたラムダは値を返すことができません
[7/30 午後 3 時 55 分に編集]
私は実際にポインターの並べ替えが必要でした - 単語の開始バイトと終了バイトの配列を持っています (VB.Net マネージ コードから渡された文字列に含まれています)。「1,2,3...」を含むポインタ配列もあり、ポインタをソートする必要がありました。
std::sort ではそれができないようだったので、独自のシェルソートを実装しました...