识别2D向量C ++中的位置

时间:2018-10-12 01:02:32

标签: c++ vector

我真的很努力地使用向量。尽管我可以在数组中执行此操作,但是我需要能够将网格传递给没有常量行和列的函数。

    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)
    }
}

谢谢!

2 个答案:

答案 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;
    }
}