首页 > 解决方案 > 错误:二进制表达式的操作数无效('vector' 和 'int')

问题描述

给定一个元素数组2n,将其配对为 n 个元素,然后找到每对中最小元素的总和,然后最大化总和。我为此写了一个类:

class Solution 
{
public:
    int sum = 0, n;

    int arrayPairSum(vector<int>& nums)
    {
        sort(nums, nums + 2 * n);
        for (i = 0; i < 2 * n; i = i + 2) 
        {
            sum = sum + nums[i];
        }
        return sum;
    }
};

但它向我展示了以下错误。

Line 5: Char 23: error: invalid operands to binary expression ('vector<int>' and 'int')
        sort(nums,nums+2*n);
                  ~~~~^~~~
/usr/bin/../lib/gcc/x86_6

我应该如何消除这个错误?

标签: c++algorithmclasssortingstdvector

解决方案


错误来自这一行

sort(nums, nums+2*n);
           ^^^^^^^^^

在这里,您尝试添加2*nints 的向量(即nums)。这没有定义,因此编译器错误。

您需要将迭代器传递给std::sort.

#include <algorithm>

std::sort(nums.begin(), nums.end());

此外,请注意在for-loop 的条件下,

for(i=0; i<2*n; i=i+2) 
         ^^^^^

n必须初始化并且2*n必须小于或等于nums.size()(即向量的大小nums)。否则,您的代码将具有未定义的行为


另外,不要练习using namespace std;。请参阅此处了解更多信息:

为什么是“使用命名空间标准;” 被认为是不好的做法?


推荐阅读