在 C++11 中,引入了一种新的循环结构——范围基于
for
循环(Range-Based For Loop)。这种语法旨在简化遍历容器(如vector
、list
、array
等)中的所有元素的过程,使代码更加简洁和易读。范围基于for
循环允许开发者以更直观的方式遍历容器中的元素。与传统的for
循环相比,它不再需要显式地使用索引或迭代器,使代码更加简洁和可读。
目录
范围基于 for 循环语法
使用方法扩展
使用 auto 关键字
使用引用来修改元素
使用常量引用
优点和缺点
优点
缺点
完整代码演示
for
循环语法基本语法如下:
for (type var : container) {
// 使用 var 处理容器中的元素
}
auto
关键字当容器的元素类型复杂或难以手动指定时,可以使用 auto
关键字来自动推导类型:
std::vector ssr = {"are", "you", "ok"};
for (auto a : ssr)
如果希望在遍历时修改容器中的元素,可以使用引用来避免复制:
std::vector numbers = {1, 2, 3, 4, 5};
for (int& num : numbers)
{
num *= 2;
}
如果不希望修改元素,可以使用常量引用来确保元素不会被意外修改,并且可以避免不必要的复制开销:
for (const int& num : numbers)
vector
、list
、array
等。for
循环可能会导致性能问题,因为每次迭代时都会复制元素。(使用引用可以解决这个问题)for
循环不支持直接访问元素的索引,如果需要索引信息,仍需使用传统的 for
循环。#include
int main() {
std::vector num1 = {1, 2, 3, 4, 5};
for (int num : num1) {
std::cout << num << " "; // 输出每个元素
}
std::cout << std::endl;
// auto 关键字自动推导类型
std::vector ssr = {"are", "you", "ok"};
for (auto a : ssr)
{
std::cout << a << " ";
}
std::cout << std::endl;
// 使用引用修改元素
std::vector num2 = {1, 2, 3, 4, 5};
for (int& num : num2) {
num *= 2;
}
//使用常量引用以避免复制
for (const int& num : num2) {
std::cout << num << " ";
}
return 0;
}