我真的很努力地使用向量。尽管我可以在数组中执行此操作,但是我需要能够将网格传递给没有常量行和列的函数。
for (row = matrix.begin(); row != matrix.end(); ++row)
{
for (col = row->begin(); col != row->end(); ++col)
{
//I need to do stuff like if (matrix[row-1][col+1] == blah)
}
}
谢谢!
答案 0 :(得分:1)
您可以使用<iterator>
中的功能来查找相邻项目
#include <iterator>
auto prev_row = std::prev(row);
auto next_row = std::next(row);
类似地
auto prev_cell = std::prev(col);
auto next_cell = std::next(col);
请小心循环起始和结束值,以免超出界限,即确保std::prev
不在begin()
之前,并确保std::next
t将您提升到end()
。
答案 1 :(得分:0)
std :: vector支持索引,因此您不必使用迭代器。您可以执行以下操作:
std::vector<std::vector<int>> matrix;
std::vector<int> row;
row.push_back(1);
row.push_back(2);
matrix.push_back(row);
for (int row = 0; row < matrix.size(); ++row) {
for (int col = 0; col < matrix[row].size(); ++col) {
std::cout << matrix[row][col] << std::endl;
}
}