如何排序 std::p空气优先
How to sort std::pair first only?
我的任务是制作方法:
- 从字符串中获取数字
- 每个数字都等于其总和的子数字
- 现在对这些总和进行排序
- 显示排序的总和及其原始值
我做了这个函数:
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
但是我不想按第一个值排序,然后按第二个值排序,正如您在
9 90
9 180
如果两个数字相同,请不要按第二个值对它们进行排序,只是它们在字符串中的位置如何。
我怎样才能实现它?
您可以通过
向sort
提供一个谓词来告诉它如何排序来实现它。例如,一个简单的 lambda:
std::sort( result.begin(), result.end(),
[](const auto& lhs, const auto& rhs) {
return lhs.first < rhs.first;
});
以上将仅按第一个值排序。
另请参阅:https://en.cppreference.com/w/cpp/algorithm/sort
相关文章:
- 使用std::multimap迭代器创建std::list
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- 从持续时间构造std::chrono::system_clock::time_point
- std::具有相同基类的类的变体
- std::向量与传递值的动态数组
- 使用std::vector的OpenCL矩阵乘法
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- std::condition_variable::wait()如何评估给定的谓词
- 如何获取std::result_of函数的返回类型
- std::原子加载和存储都需要吗
- 将对象移动到std::shared_ptr
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- std::p作为 std 中定义的unordered_map自定义键的字符串的空气失败并出现模板错误
- 如何排序 std::p空气优先
- 如何从地图返回标准::p空气的指针并将其放入vector<*std::p air...>
- find_if和std::p空气,但只是一个元素
- std::p空气作为模板<class>参数?C++