[英]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.