如何获取行长度可变的二维向量各行列数?代码报错求助
问题分析与修正
原代码存在几个关键错误:
- 循环逻辑颠倒:外层不应固定遍历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
相关产品推荐
相关产品推荐

