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

C++实现数组拆分最大和时binary expression报错如何解决

错误根因
  • 直接报错原因:std::sort要求传入两个迭代器标识排序区间,你代码中的nums是vector<int>容器对象,不是原生数组指针,不支持直接和整数做加法运算,因此nums + 2 * n是非法表达式。
  • 额外隐藏问题:
    • 成员变量n未初始化,数组长度应该通过nums.size()方法直接获取,无需额外定义变量存储
    • 循环变量i未声明类型,不符合C++语法要求
    • sum定义为类成员变量,多次调用arrayPairSum方法时会残留上一次的计算结果,导致返回值错误
修正后的完整代码
class Solution 
{
public:
    int arrayPairSum(vector<int>& nums)
    {
        sort(nums.begin(), nums.end());
        int sum = 0;
        for (int i = 0; i < nums.size(); i += 2) 
        {
            sum += nums[i];
        }
        return sum;
    }
};
修改点说明
  • 排序逻辑改用vector的迭代器作为入参,nums.begin()指向数组首元素,nums.end()指向数组尾后位置,符合std::sort的参数要求
  • 删除无用的类成员变量sum、n,将sum改为方法内的局部变量,避免多次调用的结果污染
  • 补充循环变量i的类型声明,修正循环边界判断逻辑,直接用nums.size()获取数组总长度

内容的提问来源于stack exchange,提问作者Noob_coder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 14:57:03