遍历二维向量
Iterating through 2 Dimensional Vectors
这是我的问题。我希望遍历由开始和长度变量(都是整数值)指定的行。但是,以下代码给了我一个分段错误。如何指定要循环访问的行?
(请注意:我只想要每一行的值(注意 *j 正在访问)如果有更好的方法,请告诉我..
vector<int>::iterator j;
vector< vector<int> >::iterator i;
vector< vector<int> > twoD;
vector<double> A;
for(i = (twoD.begin() + 1 + start); i != (twoD.begin() + start + 1 + length); i++)
for(j = (*i).begin(); j !=(*i).end(); j++)
printf(" %d n", *j);
相同的代码,不指定开始和结束行(for 循环中的开始和开始+长度参数)按预期编译和运行。
for(i = (twoD.begin() + 1); i != twoD.end(); i++)
for(j = (*i).begin(); j !=(*i).end(); j++)
printf(" %d n", *j);
如果二维数组中的整数大于或等于双向量 A 的大小,您将尝试访问越界索引。
换句话说,如果是这种情况:*j >= A.size()
,你会越界。
经过几次 for 循环后,你的 "i" 将大于 twoD。这意味着您将超出界限。永远不要这样称呼:
i != (twoD.begin() + start + 1 + length)
相反,只需像这样键入:
i != (twoD.end)
也不要使用 i++。相反,只需使用 ++i。这样更安全一点。
相关文章:
- 我在二维向量中是否正确分配了内存
- 在二维向量或数组中可以存储的最大元素数是多少?
- 如何将整数字符串转换为整数的二维向量?
- 如何使用擦除和迭代器来删除二维向量中的项目
- 如何在二维向量c++中迭代col
- 如何在C++中将.csv文件的元素存储到二维向量中?
- std::vector::clear()ing 二维向量线程的内部向量安全吗?
- 在我为我的二维向量提供第一个值后控制台关闭
- 以C++输出二维向量
- 在 c++ 中赋值给二维向量
- 在二维向量的每一列中查找最大值
- 类对象初始化的二维向量
- 有没有办法像python:np.concatenate([x,y,z],axis=1)中那样沿着列连接三个二维向量C++
- 我如何在二维向量中存储一些数组
- 我可以push_back矩形形状到继承矩形形状的类的二维向量中吗?
- 二维向量的迭代器
- 在 STL 中,如何交换二维向量
- 创建一个二维向量阵列,遍历
- 创建二维向量的错误
- C++从文件中读取信息并从该信息构建二维向量