我正在尝试为qsort的比较器创建一个内联函数 - 类似这样:
function<int(int,int)> comparesort = [smarkers, emarkers, strSearch] (int *arg1, int *arg2) { return 0; };
qsort(sortptrs, nKeywords, sizeof(int), comparesort);
Run Code Online (Sandbox Code Playgroud)
它给了我这个错误
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);
Run Code Online (Sandbox Code Playgroud)
并且它给出了一个错误:
错误C3499:已指定具有void返回类型的lambda无法返回值
[编辑于7月30日下午3:55]
我实际上需要一个指针排序 - 我有一个单词的开始和结束字节数组(在从VB.Net托管代码传入的字符串中找到).我还有一个包含"1,2,3 ..."的指针数组,我需要对指针进行排序.
似乎我不能用std :: sort这样做,所以我实现了自己的shell排序......