我只是在玩C ++ sort& lambda并想知道是否可以按总和对元素进行排序? 例如:
std::sort(my_vector.begin(), my_vector.end(), [&, sum](int a, int b){
return a + b == sum; });
我尝试了上面的方法,它给出了运行时错误:"Expression: Invalid operator <".
UPDATE1
示例: Sum = 4
1,2,5,3,2
我需要对元素进行分组,两者之和等于Sum,例如4
所以它必须这样分组:
1,3,2,2,5
有人可以建议替代解决方案吗?我只是懒得用哑巴迭代来实现它。
感谢。
答案 0 :(得分:3)
std::sort
需要一个比较元素的谓词。该谓词必须建立strict weak ordering,其中一个重要属性是pred(a, b)
返回true,pred(b, a)
必须返回false。你的lambda不满足这个属性。