C ++ программа ничего не делает при запуске - PullRequest
0 голосов
/ 04 марта 2019

Я на Ubuntu 18.04 использую компилятор по умолчанию c ++, который входит в комплект.Я пытаюсь получить требуемый размер вектора с клавиатуры и в конечном итоге заполнить вектор возрастающим значением i в функции makeGaps.Затем я хотел бы вернуть заполненный вектор в мою переменную x.Тем не менее, когда я запускаю приведенный ниже код, после того, как он отображает «размер вводимого промежутка», он ничего не делает даже после того, как я предоставил целое число.Нет вывода, нет ошибок, а также в блоках кода все значки отладчика становятся серыми.Код также не заканчивается, и я не могу понять, что не так.

#include <iostream>
#include <vector>
 using namespace std;

 vector<int> makeGaps (int size){
    vector<int>  vectorOfGaps(size);
    for(int i = 0; i <= vectorOfGaps.size();i++){
        vectorOfGaps.push_back(i);
    }
    return vectorOfGaps;
}
void printV(vector<int> collection){
    for (int i = 0; i <= collection.size(); i++){
        cout << collection[i]<< '\n';
    }
}
int main()
{   //get the number of gaps required
    int numberOfGaps;
    cout << "Enter gap size";
    cin >> numberOfGaps;
    vector<int> x = makeGaps(numberOfGaps);
    printV(x);
    return 0;
}

Кроме того, если я запустил его в терминале, который идет с кодом, он сломал мою машину.

1 Ответ

0 голосов
/ 04 марта 2019

Векторы в c ++ имеют динамический размер.

Вы можете создать вектор без аргумента размера в конструкторе, а затем увеличить число элементов, например, так:

vector<int> makeGaps (int size){
    vector<int>  vectorOfGaps;
    for(int i = 0; i < size;i++){
        vectorOfGaps.push_back(i);
    }
    return vectorOfGaps;
}

Редактировать: Также,как кто-то уже указал в ваших комментариях, похоже, что у вас была одна ошибка в вашем цикле for.Если цикл for работает до x <= size, он будет повторяться size+1 число раз.

...