我在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代码附带的终端中运行它,也会使我的机器崩溃。
答案 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
次。