我'我用lambda算子尝试不同的东西来理解。
现在我挂在一个点上。
我想按照模5对这个矢量进行排序:
首先所有int
的余数为0
,其余为1
,余数为2
....余数4
输入:
12,6,32,33,17,21,9,10,2,8,20
输出
10,20,21,6,12,32,17,2,33,8,9
这就是我想要的吗? 如果是,你可以给我一个提示吗?
我发现了排序运算符并尝试了一些正常排序:
void order(vector<int> vec){
sort(begin(vec), end(vec),
[](int i, int j) {
return (i < j);
}
);
为了证明我已经做了一些事情^^
答案 0 :(得分:2)
只需使用%
模运算符。
std::sort(vec.begin(), vec.end(),
[](int a, int b) { return std::abs(a % 5) < std::abs(b % 5); });
答案 1 :(得分:1)
如果您希望按余数排序并按值除以相同的余数,则可以使用:
void order(vector<int> vec){
sort(begin(vec), end(vec),
[](int i, int j) {
return std::make_tuple( std::abs( i % 5 ), i ) < std::make_tuple( std::abs( j % 5 ), j );
}
);