容器遍歷之foreach學習心得

2021-07-07 10:42:37 字數 1350 閱讀 9520

c++中遍歷容器的方法有很多種,如普通for迴圈+容器長度,stl迭代器等,其中,for each的用法最簡潔。

一、標準c++的寫法如下:

for each (object var in collection_to_loop)

stl的演算法庫中,還提供了乙個for_each()函式,它可以指定區間。

此外,還可以使用「基於範圍的for迴圈(c++11)」,見《c++primer plus》p152。另附,vs2012下的示例**:

#include

#include

using std::vector;

using std::cout;

using std::endl;

int _tmain(int argc, _tchar* argv)

for each (auto var in vec)  

// for each (object var in collection_to_loop)

cout << endl;

for(int var : vec)  

// 基於範圍的for迴圈

return 0;

}

二、qt中的寫法

首先,qt支援「

for each (object var in collection_to_loop)」和「基於

範圍的for迴圈」兩種標準c++的寫法。其次,qt也支援如下的寫法:

foreach (object var,collection_to_loop)

類似與c#中的寫法,for與each無空格,引數一是元素,引數二是容器,中間用逗號分隔。

注:foreach是qt提供的乙個「偽關鍵字」,見《c++ gui programming with qt4, second edition》p213

三、對比c#中的寫法

首先,c++的容器(container)在c#中稱為集合(collection)。

其次,c#的

for與each無空格,寫法是:

foreach (object var in collection_to_loop)。

再次,可以用var進行自動型別推斷。

注:c#中的var,其作用類似與c++中的auto,但比auto功能強大。auto必須在當前語句中能推斷出變數的型別,而var可以先宣告變數,在後續的語句中再指定變數的型別,且變數型別指定後,不能再改變其型別(不再接收其他型別的賦值)。

總結:1,c++需要變數容器,推薦使用標準c++的「for each (object var in collection_to_loop)」,它類似與c#,同時相容vs和qt;

2,如果是要選擇區間遍歷,可以使用stl的for_each()

學習筆記 foreach 遍歷 語句

模擬 購物車場景 記錄商品名稱,數量和 並統計總金額 現將商品資訊儲存在string型別的陣列中,string info 使用foreach迴圈將遍歷這個二維陣列.p72 foreach 遍歷 語句 2020 03 16 12 45 42 模擬 購物車場景 記錄商品名稱,數量和 並統計總金額 現將商...

學習筆記之 Iterator 容器與容器遍歷

color red 容器 color 就是能夠容納其他元素這樣的物件叫著容器,也就是說 容器也是乙個物件 我們想寫乙個容器的話 可以用陣列或者鍊錶來模擬乙個容器 它應該具備乙個add方法,用陣列模擬容器和陣列直接裝東西相比,好處就是不用在考慮陣列邊界的問題了可以動態增長,想往裡頭裝東西直接裝就是了 ...

C 學習筆記(三) ForEach遍歷集合

1.foreach遍歷集合 1 簡單來說ienumerable是乙個宣告式的介面,宣告實現該介面的類就是 可迭代的enumerable 但並沒用說明如何實現迭代器 iterator 2 而ienumerator介面是實現式介面,它宣告實現該介面的類就可以作為乙個迭代器iterator.3 乙個col...