You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++ sort()函数执行后未对vector元素生效的问题排查

问题根源

你的排序操作没有作用到原始数组上:
你使用的for (auto vec : cands)遍历语法中,vec是cands中每个子vector的值拷贝,你对这个临时副本做排序,修改结果不会同步到原cands数组,所以后续读取cands生成获胜者名单时,用的还是未排序的原始数据。

修复方法

仅需要修改排序遍历的声明,将值遍历改为引用遍历即可:
将

for (auto vec : cands) {

修改为

for (auto& vec : cands) {

增加&符后,vec会直接指向cands中的原始元素,排序的修改会直接保留在原数组中。

额外优化说明(非必须)

你当前的排序逻辑存在功能冗余:你同时使用了反向迭代器rbegin()/rend()和降序比较器return x.first > y.first,二者选其一即可实现降序排序,比如可以简化为以下两种写法的任意一种:

  1. 正向迭代器配降序比较器:
sort(vec.begin(), vec.end(), [](pair<int, string>& x, pair<int, string>& y) {
    return x.first > y.first;
});
  1. 反向迭代器配默认升序比较器:
sort(vec.rbegin(), vec.rend());

内容的提问来源于stack exchange,提问作者samar taj Shaikh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 03:27:02