gpt4 book ai didi

c++ - 将 func_pointer 传递给 sort()

转载 作者:行者123 更新时间:2023-11-30 05:09:37 24 4
gpt4 key购买 nike

学习将 lamda 函数指针传递给 sort()。

我创建了一个奇怪的比较函数,3 比任何数字都大,而其他数字遵循正常的比较规则。

然后我将函数指针传递给接受 vector 的排序函数。

我希望结果像 3、5、4

但实际结果是 5、4、3。

请你帮忙解释一下后台发生了什么,以及为什么我的奇怪函数没有影响结果。

int main()
{

//strange compare function, 3 is larger than anything, whlie other numbers follow normal rule
auto plarger = [](int a, int b)
{
if((a==3) && (b !=3))
{
cout<<"i am here"<<endl;
return true;
}
else return a>b;
};

vector<int> s { 3, 4, 5 };
sort(s.begin(), s.end(), plarger);
for (auto i : s)
{
cout << i << endl;
}

return 0;
}

最佳答案

您没有考虑 b 为 3 的情况。将其用作您的比较函数。

auto plarger = [](int a, int b)
{
if ((a == 3) && (b != 3))
{
return true;
}
else if ((b == 3) && (a != 3))
{
return false;
}
else return a>b;
};

关于c++ - 将 func_pointer 传递给 sort(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46088369/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com