【问题标题】:Unable to store numbers using vector无法使用矢量存储数字
【发布时间】:2021-12-10 14:41:10
【问题描述】:
vector<int> oper(int A, int B) {
    
    std::vector <int> arrayV;

    int addition = A + B;
        arrayV.push_back(addition);
    int mutiplication = A * B;
        arrayV.push_back(mutiplication);
    int subtraction;
        if(A >=B ){
            subtraction = A - B;   
        }
        else(B >A );{
            subtraction = B - A;
        }
        arrayV.push_back(subtraction);
    int division;
         if(A >=B ){
            division = A / B;   
        }
         else(B >A );{
            division = B / A;
        }
        arrayV.push_back(division);
}

//谁能告诉我我的代码哪里出错了,它一直告诉我“egmentation Fault (SIGSEGV)”,我希望arrayV能够在+、*、-、/之后存储数字;

【问题讨论】:

  • 您能否发布整个代码,以及您如何调用该函数,因为我没有看到任何可疑之处?也许我错过了什么。 (我确实发现您忘记return 向量,但这并不能解释为什么会出现分段错误)
  • 这就是我得到的整个部分,因为我在这个向量函数()中执行了这段代码;即使我添加了return arrayV(),我也会得到一个错误代码“prog.cpp:33:5: error: expected unqualified-id before return return arrayV;”
  • @justANewbie Faiing 返回向量很可能会导致分段错误。它具有未定义的行为。
  • else(B &gt;A );{ 是您的代码中实际包含的内容吗?这对我来说不合适。
  • @Embeddeder 那你一定是把return arrayV;写错地方了。

标签: c++ vector


【解决方案1】:

正如我和其他人在 cmets 中指出的那样,您忘记了return arrayV;。此外,您的 else 语法错误

std::vector<int> oper(int A, int B) {
    
    std::vector <int> arrayV;

    int addition = A + B;
    arrayV.push_back(addition);

    int mutiplication = A * B;
    arrayV.push_back(mutiplication);

    int subtraction;
    if(A >=B ){
        subtraction = A - B;   
    }
    else{
        subtraction = B - A;
    }
    arrayV.push_back(subtraction);
    int division;
    if(A >=B ){
        division = A / B;   
    }
    else{
        division = B / A;
    }
    arrayV.push_back(division);
    return arrayV;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-10
    • 2018-07-24
    • 1970-01-01
    • 2012-05-15
    • 2012-05-16
    • 2020-06-23
    • 1970-01-01
    • 2021-11-04
    相关资源
    最近更新 更多