簡體   English   中英

向量-使用迭代器vs索引

[英]Vector - using iterator vs index

我對C ++比較陌生,

我有兩段代碼:

for (std::vector<int>::size_type i = 0; i != inventoryvec.size(); i++)
{
    cout << inventoryvec[i].description << endl;
}

    for (std::vector<items>::iterator it = inventoryvec.begin(); it != inventoryvec.end(); ++it) 
    {
        cout << inventoryvec[it].description;
    }

第二個代碼無效“錯誤沒有運算符“ []”匹配這些操作數“-為什么我無法像使用” i“一樣使用” it“。 它的主要目的是代表價值嗎?

這是對索引使用迭代器的限制,還是我做錯了什么。

要取消引用向量,請使用*運算符。

(*it)替換inventoryvec[it]

當然,像往常一樣,您可以使用it->description作為(*it).description簡寫。

迭代器只是抽象指針。 迭代器指向成員。 你取消對它的引用* (或者你可以使用使用-> ),以推進其++用,並將其移到一個項背(如果操作實現) --

對於矢量,幾乎沒有抽象。 向量迭代器實際上是(或可以是)(專業化除外)指向std::vector包裝的數組成員的指針。

您可以將std::vector<items>::iterator視為items類型的指針,但更為復雜。 因此,您可以使用解引用運算符(aka *)訪問其指向的數據。 您也可以使用->運算符

暫無
暫無

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

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