通过一对数组元素的总和对矢量进行排序

时间:2014-11-10 14:33:07

标签: c++ sorting c++11 lambda

我只是在玩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

有人可以建议替代解决方案吗?我只是懒得用哑巴迭代来实现它。

感谢。

1 个答案:

答案 0 :(得分:3)

std::sort需要一个比较元素的谓词。该谓词必须建立strict weak ordering,其中一个重要属性是pred(a, b)返回true,pred(b, a)必须返回false。你的lambda不满足这个属性。