Невозможно сохранить числа с помощью вектора

#c #vector

Вопрос:

 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);
}
 

//Может ли кто-нибудь сообщить мне, где я ошибся с моим кодом, что он продолжает говорить мне «Ошибка эгментации (SIGSEGV)», я хочу, чтобы arrayV мог хранить числа после , *, -, /;

Комментарии:

1. Можете ли вы опубликовать весь код и как вы вызываете функцию, потому что я не видел ничего подозрительного? Может быть, я что-то упустил. (Я замечаю, что вы забываете return о векторе, но это не объясняет, почему существует ошибка сегментации)

2. Это весь раздел, который у меня есть, потому что я выполняю этот блок кода в этой самой векторной функции(); даже если я добавлю return arrayV (), я получу код ошибки «prog.cpp:33:5: ошибка: ожидаемый неквалифицированный идентификатор перед возвратом return arrayV;»

3. @justANewbie, возвращающий вектор, вполне может привести к ошибке сегментации. У него неопределенное поведение.

4. Это else(B >A );{ то, что у вас на самом деле есть в вашем коде? Мне это кажется неправильным.

5. @Embeddeder Тогда вы, должно быть, написали return arrayV; не в том месте.

Ответ №1:

Как я и другие отмечали в комментариях, вы забыли 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;
}