C++中范围for(AI)

在C++11中,引入了一种新的循环结构,即范围for循环(range-based for loop),它提供了一种简洁且安全的方式来遍历容器(如数组、向量std::vector、列表std::list等)或其他序列。范围for循环能够自动处理迭代过程,从而减少了传统for循环或迭代器使用中可能出现的错误。

以下是范围for循环的基本语法:

 

cpp复制代码

for (declaration : range) {
// 循环体
}
  • declaration:这是循环变量的声明。在每次迭代中,它会被初始化为range中的一个元素。其类型会自动推导,但你也可以显式指定。
  • range:这表示要遍历的序列或容器。

范围for循环会遍历range中的每个元素,并在每次迭代中将当前元素的值赋给declaration声明的变量。

示例代码

以下是一些使用范围for循环的示例:

 

cpp复制代码

#include <iostream>
#include <vector>
#include <list>
#include <array>
int main() {
// 遍历数组
int arr[] = {1, 2, 3, 4, 5};
for (int val : arr) {
std::cout << val << " ";
}
std::cout << std::endl;
// 遍历向量
std::vector<int> vec = {10, 20, 30, 40, 50};
for (int val : vec) {
std::cout << val << " ";
}
std::cout << std::endl;
// 遍历列表
std::list<std::string> lst = {"apple", "banana", "cherry"};
for (const std::string& str : lst) {
std::cout << str << " ";
}
std::cout << std::endl;
// 遍历数组(使用auto自动推导类型)
std::array<double, 3> arr2 = {1.1, 2.2, 3.3};
for (auto val : arr2) {
std::cout << val << " ";
}
std::cout << std::endl;
// 遍历容器中的元素并修改(使用引用)
std::vector<int> vec2 = {1, 2, 3, 4, 5};
for (auto& val : vec2) {
val *= 2; // 将每个元素乘以2
}
for (auto val : vec2) {
std::cout << val << " ";
}
std::cout << std::endl;
return 0;
}

注意事项

  1. 类型推导:在范围for循环中,循环变量的类型会自动推导为与range中的元素类型相匹配。但你也可以显式地指定类型,如果希望与range中的元素类型不完全一致(例如,使用const引用以避免不必要的复制)。

  2. 修改容器中的元素:如果需要在循环中修改容器中的元素,应该使用引用类型(auto&)来声明循环变量。

  3. 只读访问:如果只需要读取容器中的元素而不需要修改它们,可以使用const引用(const auto&)来提高效率并避免不必要的复制。

  4. 范围for循环与原始迭代器:范围for循环在内部使用迭代器来遍历容器,但它为开发者提供了一个更高层次的抽象,从而简化了代码并减少了出错的可能性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值