【问题标题】:error: invalid use of void expression for an int type function错误:对 int 类型函数无效使用 void 表达式
【发布时间】:2021-04-03 11:21:06
【问题描述】:

我正在尝试解决一个问题,我们必须找到一个数组/向量的所有子集,它们的总和等于用户定义的数字。 我决定使用向量递归地解决它。这是代码-

#include <bits/stdc++.h>
using namespace std;

vector<int> v1{1,2,3};
int n = v1.size();
int sum = 4;

int subset(vector<int> cur, int i);

int main() {
    vector <int> v;
    cout<<subset(v,0);
    return 0;
}

int subset(vector<int> cur, int i = 0){
    
    if(i == n && accumulate(cur.begin(), cur.end(), 0) == sum)
        return 1;
    else if(i == n && accumulate(cur.begin(), cur.end(), 0) != sum)
        return 0; 
    return (subset(cur, i+1) + subset(cur.push_back(v1[i]), i+1));      
}

即使子集函数是 int 类型并且它返回一个整数值,我也会收到错误“无效表达式的使用”。我哪里错了?

【问题讨论】:

  • push_back 返回void

标签: c++ recursion vector subset


【解决方案1】:

return (subset(cur, i+1) + subset(cur.push_back(v1[i]), i+1)); 行出错

cur.push_back 有声明 - void push_back (const value_type&amp; val);

它返回 void。

【讨论】:

    猜你喜欢
    • 2014-11-05
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    • 2016-07-12
    • 2018-08-13
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多