You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取行长度可变的二维向量各行列数?代码报错求助

问题分析与修正

原代码存在几个关键错误:

  • 循环逻辑颠倒:外层不应固定遍历10次,而是遍历二维向量的所有行(someVector.size());内层要遍历当前行的列数(someVector[i].size()),而非行数。
  • 语法错误:.push_back前缺少目标一维向量的变量名v。
  • 冗余无效代码:resV.resize(10)未被使用,属于多余代码。
  • 越界风险:硬循环10次会导致访问行数不足10的二维向量时,或行内元素不足10时出现非法内存访问。

修正后的代码

vector<vector<int>> &someVector;
vector<int> v;

// 外层遍历所有行
for (int i = 0; i < someVector.size(); ++i) {
    // 内层遍历当前行的所有列,避免越界
    for (int j = 0; j < someVector[i].size(); ++j) {
        // 筛选大于0的元素存入一维向量
        if (someVector[i][j] > 0) {
            v.push_back(someVector[i][j]);
        }
    }
}

补充说明

题目提到每行列数不超过10,所以直接用someVector[i].size()作为内层循环上限即可,既符合需求又能彻底避免数组越界问题。

内容的提问来源于stack exchange,提问作者wewedewfejqwd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 18:10:31