//this is my code that i have written
vector<vector<int>> generate(int numRows) {
vector<vector<int>>ans;
ans[0].push_back(1);
if(numRows==1) return ans;
ans[1].push_back(1);
ans[1].push_back(1);
if(numRows==2) return ans;
for(int i=2;i<=numRows-1;i++){
for(int j=0 ; j<= ans [i] . size() - 2 ; j++){
int x= ans [i][j] + ans [i][j+1];
ans [i+1].push_back(x);
}
ans [i+1].insert(ans [i+1].begin(),1);
ans [i+1].insert(ans [i+1].end(),1);
}
return ans;
}这段代码显示下面的错误。
Line 1034: Char 9: runtime error: reference binding to null pointer of type 'std::vector<int, std::allocator<int>>' (stl_vector.h)
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_vector.h:1043:9发布于 2021-05-21 22:59:39
因为vector在内部将数据存储在堆上,堆可以根据您的使用情况而增大或缩小。但在本例中,您创建了一个空的vector,因此它不会分配任何内存。为了避免这个错误,你必须向向量构造函数提供大小,或者在你想要使用的每个索引上返回空向量。因此,您可能需要执行以下操作:
std::vector<vector<int>> ans(numRows);
ans[0].push_back(1);这将会起作用。
https://stackoverflow.com/questions/67638686
复制相似问题