C ++程序在执行时不执行任何操作

时间:2019-03-04 19:04:33

标签: c++ debugging codeblocks stdvector

我在Ubuntu 18.04上使用其随附的默认c ++编译器。我试图从键盘上获取所需向量的大小,并最终在makeGaps函数中用i的递增值填充向量。然后,我想将填充的向量返回到变量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;
}

如果我在vs代码附带的终端中运行它,也会使我的机器崩溃。

1 个答案:

答案 0 :(得分:0)

c ++中的向量是动态调整大小的。

您可以在构造函数中创建一个不带size参数的向量,然后按如下所示增加元素的size数量:

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次。