首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >第9章:运行时错误:引用绑定到类型为'int‘的空指针(stl_vector.h)

第9章:运行时错误:引用绑定到类型为'int‘的空指针(stl_vector.h)
EN

Stack Overflow用户
提问于 2022-06-02 16:52:17
回答 1查看 40关注 0票数 0

在解决Pascal关于Leetcode的三角形问题时,我得到了以下代码的运行时错误:

代码语言:javascript
复制
Char 9: runtime error: reference binding to null pointer of type 'int' (stl_vector.h)
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior

我确实想出了其他可以工作的代码,但是我想知道为什么我会得到这个代码的错误。

代码语言:javascript
复制
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;     
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-02 17:01:58

使用元素的vector v数构造numRows。然后从0迭代到numRows - 1,在每次迭代中,向vector v的And添加一个新的vector,因此最终得到一个vector,它保存了元素的2 * numRows数,而不是元素的numRows数。

而不是vector<vector<int>> v(numRows);,您应该使用v.reserve(numRows)。这是完整的代码:

代码语言:javascript
复制
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;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72479696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档