1、C++98 中的 傳統for
?循環
- 語法結構:這種形式的?
for
?循環由三個部分組成:初始化語句(int i = 0
)、循環條件(i < 10
)和迭代語句(i++
)。通常用于遍歷一個已知大小的循環范圍。 - 使用場景:適用于需要控制循環次數、迭代索引或在循環內修改循環變量的情況。
(1)傳統for循環遍歷普通元素或數組
? 示例1:遍歷普通元素
for (int i = 0; i < 3; i++) {cout << i << " ";
}
? 示例2:使用傳統的 for 循環遍歷數組
#include <iostream>
using namespace std;int main() {// 使用傳統的 for 循環遍歷數組int arr[] = {1, 2, 3, 4, 5};int size = sizeof(arr) / sizeof(arr[0]);for (int i = 0; i < size; i++) {cout << arr[i] << " ";}cout << endl;return 0;
}
(2)傳統的 for
循環遍歷vector
容器
- 通過傳統的
for
循環或者使用迭代器來遍歷vector
等容器。 - 使用
vec[i]
可以訪問元素,vec.begin()
和vec.end()
可以通過迭代器遍歷容器中的元素。
#include <iostream>
#include <vector>
using namespace std;int main() {vector<int> vec = {1, 2, 3, 4, 5};// 使用傳統的 for 循環訪問 vector 元素for (int i = 0; i < vec.size(); i++) {cout << vec[i] << " "; // 通過索引訪問元素}cout << endl;// 使用迭代器遍歷 vectorfor (vector<int>::iterator it = vec.begin(); it != vec.end(); ++it) {cout << *it << " "; // 通過迭代器訪問元素}cout << endl;return 0;
}
2、C++11中的范圍-based?for
?循環
C++11 引入了范圍-based for
循環,這是一種更加簡潔且易于使用的語法。該語法使得程序員無需手動管理索引或迭代器,便可直接遍歷容器中的每個元素。
for (int i : 容器) {cout << i << " "; // 自動遍歷容器中的所有元素
}for (int i : vec) {cout << i << " "; // 自動遍歷容器中的元素
}
#include <iostream>
#include <vector>
using namespace std;int main() {vector<int> vec = {1, 2, 3, 4, 5};// 使用范圍-based for 循環訪問 vector 元素for (int i : vec) {cout << i << " "; // 自動遍歷容器中的元素}cout << endl;return 0;
}
在 C++11 中,程序員不再需要顯式地聲明索引或迭代器,而是通過范圍-based
for
循環直接遍歷容器中的每一個元素。int i : vec
的語法簡化了容器遍歷的過程,并且使代碼更加清晰。
3、主要區別?
特性 | 范圍-based?for ?循環 | 傳統?for ?循環 |
---|---|---|
語法簡潔度 | 非常簡潔,自動遍歷容器元素 | 較為冗長,需要手動管理索引 i |
適用性 | 適用于容器遍歷,尤其是不需要訪問索引時 | 適用于控制循環次數或需要訪問索引時 |
支持版本 | C++11 及之后的版本 | C++98 及更早版本 |
是否支持修改容器元素 | 可以修改元素(如果容器支持) | 可以修改元素 |
是否支持控制迭代條件 | 不支持,自動遍歷容器中的所有元素 | 支持自定義控制循環的條件?? |