备案名称和网站名称不一致,网站增加用户体验,模板简历,wordpress 阿里大鱼关于for循环的几种写法
在 C 中#xff0c;for(int i 0; i n; i) 是一种常见的循环写法#xff0c;用于遍历从 0 到 n-1 的索引。如果你希望简化这种写法#xff0c;可以使用以下几种方法#xff1a; 1. 使用范围 for 循环
如果你需要遍历一个容器#xff08;如数…关于for循环的几种写法
在 C 中for(int i 0; i n; i) 是一种常见的循环写法用于遍历从 0 到 n-1 的索引。如果你希望简化这种写法可以使用以下几种方法 1. 使用范围 for 循环
如果你需要遍历一个容器如数组、vector、list 等可以使用 C11 引入的范围 for 循环range-based for loop。
示例
std::vectorint nums {1, 2, 3, 4, 5};// 传统 for 循环
for (int i 0; i nums.size(); i) {std::cout nums[i] ;
}// 范围 for 循环
for (int num : nums) {std::cout num ;
}优点
更简洁不需要手动管理索引。适用于所有支持迭代器的容器。 2. 使用 std::for_each
如果你需要对容器中的每个元素执行某个操作可以使用 std::for_each。
示例
#include algorithm
#include iostream
#include vectorstd::vectorint nums {1, 2, 3, 4, 5};// 使用 std::for_each
std::for_each(nums.begin(), nums.end(), [](int num) {std::cout num ;
});优点
函数式编程风格代码更简洁。可以结合 lambda 表达式使用。 3. 使用 while 循环
如果你需要更灵活的控制循环条件可以使用 while 循环。
示例
int i 0;
while (i n) {std::cout i ;i;
}优点
适用于复杂的循环条件。 4. 使用 do-while 循环
如果你希望循环至少执行一次可以使用 do-while 循环。
示例
int i 0;
do {std::cout i ;i;
} while (i n);优点
适用于至少执行一次的场景。 5. 使用 auto 简化类型声明
如果你遍历的是容器可以使用 auto 简化类型声明。
示例
std::vectorint nums {1, 2, 3, 4, 5};
for (auto num : nums) {std::cout num ;
}优点
代码更简洁不需要显式指定类型。 6. 使用 std::iota 生成索引
如果你需要生成从 0 到 n-1 的索引可以使用 std::iota。
示例
#include numeric
#include vector
#include iostreamint n 5;
std::vectorint indices(n);
std::iota(indices.begin(), indices.end(), 0); // 生成 0, 1, 2, 3, 4for (int i : indices) {std::cout i ;
}优点
适用于需要生成索引的场景。 7. 使用 std::rangesC20
如果你使用的是 C20可以使用 std::ranges 简化循环。
示例
#include ranges
#include vector
#include iostreamstd::vectorint nums {1, 2, 3, 4, 5};// 使用 std::ranges::for_each
std::ranges::for_each(nums, [](int num) {std::cout num ;
});优点
更现代的写法代码更简洁。 8. 总结
方法适用场景优点范围 for 循环遍历容器简洁不需要手动管理索引std::for_each对容器中的每个元素执行操作函数式风格结合 lambda 表达式while 循环复杂循环条件灵活do-while 循环至少执行一次适用于特定场景auto 简化类型声明遍历容器代码更简洁std::iota生成索引适用于需要生成索引的场景std::rangesC20 中的现代写法更简洁更现代
推荐方法如果遍历容器优先使用范围 for 循环或 std::for_each。