【发布时间】:2014-11-10 14:33:07
【问题描述】:
我只是在玩 C++ 排序和 lambda,想知道是否可以按总和对元素进行排序? 例如:
std::sort(my_vector.begin(), my_vector.end(), [&, sum](int a, int b){
return a + b == sum; });
我尝试了上面的方法,它给出了运行时错误:"Expression: Invalid operator <".
更新1
例子: 总和 = 4
1 ,2 ,5, 3, 2
我需要对元素进行分组,两者之和等于 Sum,例如 4
所以它必须像这样分组:
1,3,2,2,5
有人可以提出替代解决方案吗?我只是懒得使用愚蠢的迭代来实现它。
谢谢。
【问题讨论】:
-
什么的总和?排序需要每对元素之间的
<函数,在您的情况下为a和b。所以将a和b相加是没有意义的。你能展示一个未排序的示例列表以及你希望它排序的内容吗? -
我已经知道了,因此我正在寻求不使用迭代器的替代解决方案!
-
@ProblemSolver 我很高兴你知道了,因为我仍然没有。清楚地解释你想如何排序。给我一个两个元素的例子,哪个更大。
-
这不是
std::sort的工作。它更接近std::partition,但仍然不是很正确(std::partition适用于单个元素,而不是找到满足谓词的对)。我很确定您在这里无法编写自己的代码。 -
但是预分组列表甚至不包含与后分组列表相同的元素。