因此,我目前正在学习c++中的2D数组,我正在解决这个问题,它有一个2D数组,我们使用c++内置的排序函数和比较器,下面是代码:
int getLights(vector<vector<int>>& lights) {
sort(lights.begin(),lights.end(),
[](const auto& a, const auto& b){
return a[0]==b[0] ? a[1]>b[1] : a[0]<b[0];
});我无法理解这个排序函数是如何工作的,有人能帮我获得这个输入的输出吗?
lights = [[5,5],[6,3],[3,6]]发布于 2022-09-09 07:05:37
发布于 2022-09-09 07:01:05
C++ STL提供了一个对向量或数组进行排序的函数排序(具有随机访问权限的项)。
它通常有两个参数,第一个参数是数组/向量的点,从数组/向量开始排序,第二个参数是我们希望数组/向量排序的长度。第三个参数是可选的,可以在我们想按字典排序元素的情况下使用。 默认情况下,sort()函数按照升序顺序对元素进行排序。 如何按特定顺序排序? 我们还可以编写自己的比较器函数,并将其作为第三个参数传递。这个“比较器”函数返回一个值;可转换为bool,这基本上告诉我们传递的“第一个”参数是否应该放在给定的“第二个”参数之前。
来源:C类STL
作为第三个参数编写的函数充当一个比较器(它是lambda表达式),它返回一个布尔值。
return a[0]==b[0] ? a[1]>b[1] : a[0]<b[0];这个语句基本上比较了a和b的元素,如果第一个元素是对第二个元素的相同检查。对于两个数组的第一个元素,它返回两个数字中最小的一个。
Output: [[3,6],[5,5],[6,3]]https://stackoverflow.com/questions/73658298
复制相似问题