一、foreach語法的基本知識
foreach循環在C++11中被引入。它允許我們簡單明了地遍曆數組,容器和其他帶有迭代器的結構。
foreach循環的基本語法如下所示:
for (auto element : container) { // 對 element 做一些操作 }
在這個語法中,auto關鍵字通常與元素類型推斷一起使用,例如數組中的元素類型。
給定一個花費數組:
double costs[] = { 1.0, 2.0, 3.0 };
下面的foreach循環可以用於遍曆數組:
for (auto cost : costs) { std::cout << cost << std::endl; }
循環將輸出:
1 2 3
二、使用foreach循環遍歷容器
我們可以使用foreach循環遍歷C++容器。在這個例子中,我們可以使用std::vector容器:
std::vector names = { "Tom", "Jerry", "Scooby" }; for (std::string name : names) { std::cout << name << std::endl; }
輸出:
Tom Jerry Scooby
我們也可以使用auto關鍵字來推斷數據類型:
std::vector numbers = { 1, 2, 3, 4, 5 }; for (auto number : numbers) { std::cout << number << std::endl; }
輸出:
1 2 3 4 5
三、使用foreach循環遍歷字符串
我們可以不使用迭代器遍歷字符串,而是使用foreach循環。在下面的例子中,我們將使用foreach循環遍歷字符串:
std::string str = "Hello, world!"; for (char c : str) { std::cout << c << std::endl; }
輸出:
H e l l o , w o r l d !
四、使用foreach循環遍歷結構體
我們可以使用foreach循環來遍歷結構體數組。在下面的例子中,我們將使用foreach循環遍歷結構體:
struct Employee{ std::string name; int age; }; Employee employees[] = { {"Tom", 28}, {"Jerry", 24}, {"Scooby", 26} }; for (auto e : employees) { std::cout << "Name: " << e.name << ", Age: " << e.age << std::endl; }
輸出:
Name: Tom, Age: 28 Name: Jerry, Age: 24 Name: Scooby, Age: 26
五、foreach循環中使用引用
我們可以使用引用在foreach循環中改變集合中的元素。在下面的例子中,我們將使用foreach循環將std::vector中的元素全部修改為0:
std::vector numbers = { 1, 2, 3, 4, 5 }; for (auto& number : numbers) { number = 0; }
現在,std::vector中的所有元素都變成了0:
0 0 0 0 0
六、foreach循環和const
我們也可以在foreach循環中使用const關鍵字,以確保我們不會在循環期間更改元素。 在下面的例子中,我們將使用const關鍵字來遍歷std::vector:
const std::vector nums = { 1, 2, 3, 4, 5 }; for (const auto& number : nums) { std::cout << number << std::endl; }
輸出:
1 2 3 4 5
七、總結
使用foreach循環是一種簡單而又方便的方式來遍曆數組,容器和其他帶有迭代器的結構。它減少了代碼的複雜度,並提高了可讀性。可以在foreach循環中使用引用和const關鍵字。
原創文章,作者:VORIE,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/351528.html