Char 9: runtime error: reference binding to null pointer of type 'int' (stl_vector.h)
Char 9: runtime error: reference binding to null pointer of type 'int' (stl_vector.h)
我在 Leetcode 上解决帕斯卡三角问题时遇到以下代码的运行时错误:
Char 9: runtime error: reference binding to null pointer of type 'int' (stl_vector.h)
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior
我确实想出了其他有效的代码,但我想知道为什么我收到此代码的错误。
vector<vector<int>> generate(int numRows) {
vector<vector<int>> v(numRows);
vector<int> q;
for(int i=0;i<numRows;i++){
q.resize(i+1);
q[0]=q[i]=1;
for(int j=1;j<i;j++){
q[j]=v[i-1][j-1]+v[i-1][j];
}
v.push_back(q);
q.clear();
}
return v;
}
您使用 numRows
个元素构造 vector v
。然后你从 0
迭代到 numRows - 1
并且在每次迭代中,你添加一个新的 vector
到 vector v
,所以你最终得到一个 vector
持有 2 * numRows
个元素而不是 numRows
个元素。
您应该使用 v.reserve(numRows)
而不是 vector<vector<int>> v(numRows);
。这是完整的代码:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> v;
v.reserve(numRows);
vector<int> q;
for(int i=0;i<numRows;i++){
q.resize(i+1);
q[0]=q[i]=1;
for(int j=1;j<i;j++){
q[j]=v[i-1][j-1]+v[i-1][j];
}
v.push_back(q);
q.clear();
}
return v;
}
我在 Leetcode 上解决帕斯卡三角问题时遇到以下代码的运行时错误:
Char 9: runtime error: reference binding to null pointer of type 'int' (stl_vector.h)
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior
我确实想出了其他有效的代码,但我想知道为什么我收到此代码的错误。
vector<vector<int>> generate(int numRows) {
vector<vector<int>> v(numRows);
vector<int> q;
for(int i=0;i<numRows;i++){
q.resize(i+1);
q[0]=q[i]=1;
for(int j=1;j<i;j++){
q[j]=v[i-1][j-1]+v[i-1][j];
}
v.push_back(q);
q.clear();
}
return v;
}
您使用 numRows
个元素构造 vector v
。然后你从 0
迭代到 numRows - 1
并且在每次迭代中,你添加一个新的 vector
到 vector v
,所以你最终得到一个 vector
持有 2 * numRows
个元素而不是 numRows
个元素。
您应该使用 v.reserve(numRows)
而不是 vector<vector<int>> v(numRows);
。这是完整的代码:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> v;
v.reserve(numRows);
vector<int> q;
for(int i=0;i<numRows;i++){
q.resize(i+1);
q[0]=q[i]=1;
for(int j=1;j<i;j++){
q[j]=v[i-1][j-1]+v[i-1][j];
}
v.push_back(q);
q.clear();
}
return v;
}