簡體   English   中英

那么使用迭代器可以像訪問指針一樣訪問二維向量中的所有元素嗎?

[英]So is that possible to using iterator access all element in 2 dimensional vector just like 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++)
        {
            std::cout << *itr << std::endl;
        }
    }

我已經建立了一個二維矢量ivec 現在,我想使用迭代器而不是下標訪問每個元素。 我知道指針是一個特殊的迭代器。 那么使用迭代器可以像訪問指針一樣訪問二維向量中的所有元素嗎?

您詢問:

那么使用迭代器可以像訪問指針一樣訪問二維向量中的所有元素嗎?

是的。

這個想法是正確的。 不過,您發布的代碼中有語法錯誤。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM