我有任务来制作以下方法:
我做了那个功能:
obj/Debug/shader.o dep/engine/shader.d : src/engine/shader.cpp src/engine/shader.h \
src/engine/transform.h src/engine/camera.h src/engine/constants.h
此函数用于参数-void orderWeight(const std::string &strng)
{
std::vector<pair<int, int>> result;
int r{}, rr{}, rrr{};
std::stringstream ss(strng);
while(ss>>r){
rrr = r;
while(r!=0){
rr += r%10;
r /= 10;
}
result.push_back( make_pair(rr, rrr));
rr = 0;
r = 0;
}
std::sort( result.begin(), result.end());
for( int i=0; i<result.size();i++){
cout<<result[i].first<<" "<<result[i].second<<endl;
}
}
返回:
56 65 74 100 99 68 86 180 90
但是我不想按第一个值排序,然后按第二个值排序,如您所见
1 100
9 90
9 180
11 56
11 65
11 74
14 68
14 86
18 99
如果两个数字相同,则不要按第二个值对它们进行排序,而要按字符串中的数字排序。
我该如何实现?
答案 0 :(得分:2)
您可以通过为sort
提供谓词来告诉它如何进行排序来实现这一目标。例如,一个简单的lambda:
std::sort( result.begin(), result.end(),
[](const auto& lhs, const auto& rhs) {
return lhs.first < rhs.first;
});
以上内容将按第一个值对仅进行排序。