那么,是否可以像使用指针一样使用迭代器访问二维向量中的所有元素呢?

So is that possible to using iterator access all element in 2 dimensional vector just like pointer?

本文关键字:向量 二维 元素 一样 是否 指针 迭代器 那么 访问      更新时间:2023-10-16

看下面的代码(我知道这是不对的):

    std::vector<std::vector<int>> ivec(2, std::vector<int>(9));
    for (auto it = ivec.begin(); it != ivec.end(); it++)
    {
        for (auto itr = it.begin(); itr != it.end(); itr++)
        {
            std::cout << *itr << std::endl;
        }
    }

我建立了一个二维向量ivec。现在我想用迭代器而不是下标来访问每个元素。我知道pointer是一个特殊的迭代器。那么有可能使用迭代器访问二维向量中的所有元素就像指针一样吗?

你问:

所以有可能使用迭代器访问所有元素在二维向量就像指针吗?

是的,它是。

这个想法是合理的。你的代码中有语法错误。

std::vector<std::vector<int>> ivec(2, std::vector<int>(9));
for (auto it = ivec.begin(); it != ivec.end(); it++)
{
    // for (auto itr = it.begin(); itr != it.end(); itr++)
    for (auto itr = it->begin(); itr != it->end(); itr++)
    {
        std::cout << *itr << std::endl;
    }
}

您可以使用range- for循环进一步简化。

std::vector<std::vector<int>> ivec(2, std::vector<int>(9));
for (auto& it : ivec)
{
    for (auto itr : it)
    {
        std::cout << itr << std::endl;
    }
}