前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vector subscript out of range数组下标越界错误「建议收藏」

vector subscript out of range数组下标越界错误「建议收藏」

作者头像
全栈程序员站长
发布2022-11-10 15:12:57
1.6K0
发布2022-11-10 15:12:57
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

在使用vector二维数组时,产生 vector subscript out of range 错误,检查之

后并没有发现数组下标越界问题,百度了一下,发现原来是数组并没有初始化

赋值,没有分配空间,所以不能采用下标的方式进行访问。

解决方法有两个,一个是初始化数组的时候为其分配空间,其值全部赋值为0。

代码语言:javascript
复制
vector<vector<int> > myvec(n, vector<int>(n, 0));

另一个就是使用 vector.push_back 添加元素,不使用下标访问赋值的方式。

下面是出问题的程序:

代码语言:javascript
复制
//构造杨辉三角
class Solution { 

public:
vector<vector<int>> generate(int numRows) { 

vector<vector<int>> res(numRows);
if (numRows < 1) return res;
for (int i = 0; i < numRows; i++)
{ 

for (int j = 0; j <= i; j++)
{ 

if (j == 0 || j == i)
res[i][j] = 1;
else
res[i][j] = res[i - 1][j - 1] + res[i - 1][j];
}
}
return res;
}
};

采用 vector.push_back 的方式解决了问题。

代码语言:javascript
复制
//构造杨辉三角
class Solution { 

public:
vector<vector<int>> generate(int numRows) { 

vector<vector<int>> res(numRows);
if (numRows < 1) return res;
for (int i = 0; i < numRows; i++)
{ 

for (int j = 0; j <= i; j++)
{ 

if (j == 0 || j == i)
res[i].push_back(1);
else
res[i].push_back(res[i - 1][j - 1] + res[i - 1][j]);
}
}
return res;
}
};

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/188851.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月27日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档