遍历矩阵的方法
Ways to traverse a matrix
for (row = vec.begin(); row != vec.end(); row++) {
for (col = row->begin(); col != row->end(); col++) {
}
}
所以我知道第一组循环运行良好,但我不确定这一组是否运行良好。
for (col = row->begin(); col != row->end(); col++){
for (row = vec.begin(); row != vec.end(); row++){
}
}
我很确定它不是,所以如果是这样的话,你会如何做类似的事情,即从一列到另一列,而不是从一行到另一行遍历矩阵。
如果你想按列遍历矩阵,那么按列主顺序而不是按行主顺序存储矩阵会更有意义,这样你的第一个循环实际上会按列而不是行遍历。
然而,假设vect
实际上引用了类似std::vector<std::vector<double>>
的内容,并且每行中的列数相同,则应该能够直接通过索引进行遍历。我之所以发布这篇文章,是因为你没有说你只考虑使用迭代器的解决方案。
for (int i = 0; i < vec[0].size(); i++){
for (int j = 0; j < vec.size(); j++){
auto data = vec[j][i];
}
}
如果行的大小不均匀,一种可能的解决方案是提前取出任何行中的最大列数。
size_t max_columns = 0;
for (int j = 0; j < vec.size(); j++)
max_columns = max(max_columns, vec[j].size());
for (int i = 0; i < max_columns; i++){
for (int j = 0; j < vec.size(); j++){
if (i >= vec[j].size()) continue;
auto data = vec[j][i];
}
}
相关文章:
- 有什么方法可以遍历结构吗
- 在循环中按顺序遍历成员变量
- 遍历模板参数
- 在遍历处理程序的向量时注册和注销处理程序
- 循环遍历标准的正确方法::array<char*, N>
- 创建可以遍历 std::map 值的通用模板迭代器的最简单方法是什么?
- 遍历 STL 映射(集/多集)的最佳方法,同时元素可能会在循环期间被删除并重新插入?
- 使用两种不同的方法遍历 Vector 的结果不一致
- 遍历矩阵的方法
- 遍历C++容器 - 最快的方法是什么?
- C/C++ 三维数组如何在内存中存储,以及遍历它的最快方法是什么
- 这种遍历二叉树的递归方法在一些递归后崩溃!为什么?
- 这是遍历阵列的更快方法
- 动态规划,遍历方法
- 无法使用非递归顺序方法遍历二叉树
- C++:遍历对象以调用相同的方法
- 在c++中遍历大文件的好方法是什么?
- 在遍历集合时从集合中擦除的最有效方法
- 有没有一种优雅的方法来遍历两个映射并比较值(映射具有相同的类型)
- 通过引用遍历节点的惯用方法