c++11新特性 范围for循环 怎么用

范围for循环(Range-based for loop)是C++11引入的一种新特性,它提供了一种更简洁、更直观的方式来遍历容器(如std::dequestd::vectorstd::list等)或数组中的所有元素。范围for循环会自动处理迭代器,使得遍历过程更加简洁和易于理解。

基本语法

for(容器数据类型 变量名 :容器实例){}

示例

int main()
{
	vector<int>v;
	v.push_back(10);
	v.push_back(20);
	v.push_back(30);
	v.push_back(40);
	for (auto val : v)//auto可以自动推导容器元素的数据类型
	{
		cout << val << " ";
	}
	cout << endl;
	return 0;
}

工作原理

范围for循环实际上是基于迭代器的,但它隐藏了迭代器的复杂性。在编译时,编译器会为你处理迭代器的创建和递增。具体来说,对于给定的容器,编译器会查找该容器的begin()end()成员函数,并使用它们来创建迭代器。然后,在每次循环迭代中,编译器都会自动递增迭代器,直到它等于end()

注意事项

  • 范围for循环通常不能用于修改容器的大小(例如,在循环体内使用push_back()erase()可能会产生不可预测的结果,因为这会改变容器的end()迭代器)。
  • 范围for循环不直接提供迭代器的访问,因此如果你需要迭代器的功能(如访问前一个或后一个元素),则应该使用传统的基于迭代器的for循环。
  • 范围for循环可以配合const容器一起使用,此时循环变量也将是const的,以防止意外修改容器中的元素。
  • 范围for循环的语法也适用于C风格的数组和初始化列表等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值