我正在尝试为 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 返回类型的 lambda 无法返回值
[编辑于 7/30 下午 3:55]
我实际上需要一个指针排序 - 我有一个单词的开始和结束字节数组(在从 VB.Net 托管代码传入的字符串中找到)。我还有一个包含“1,2,3 ...”的指针数组,我需要对指针进行排序。
似乎我不能用 std::sort 做到这一点,所以我实现了自己的 shell 排序......