几种类型的for循环

//win10下,VS2017中编译
#include <iostream>
using std::cout;
using std::endl;
#include <vector>
using std::vector;
int main()
{
	int a[] = { 2,3,5,7 };//整型数组
	vector<int> v = { 6,8,5,1,7 };//vector容器,直接初始化

	//方式一,下标
	for (int i = 0; i < 4; ++i)
	{
		cout << a[i] << "\t";
	}
	cout << endl;

	for (int i = 0; i < v.size(); ++i)
	{
		cout << v[i] << "\t";
	}
	cout << endl;
	

	//方式二,迭代器,类似于指针
	for (vector<int>::iterator it = v.begin(); it != v.end(); ++it)
	{
		cout << *it << "\t";
	}
	cout << endl;

	//用auto改写,auto自动推导类型
/*	for (auto i = 0; i < 4; ++i)
	{
		cout << a[i] << "\t";
	}
	cout << endl;

	for (auto it = v.begin(); it != v.end(); ++it)
	{
		cout << *it << "\t";
	}
	cout << endl;
*/


	//方式三,C++11/14引入 :(本质上是迭代器实现)
	for (const auto& x : a)
	{
		cout << x << "\t";
	}
	cout << endl;

	for (auto& x : v)
	{
		cout << x << "\t";
	}
	cout << endl;

	
	//方式四,BOOST_FOREACH,不仅支持数组、容器,还支持迭代器的pair和逆序遍历
	//#include "boost/foreach.hpp"
/*	BOOST_FOREACH(auto& x, v)
	{
		cout << x << "\t";
	}
*/
    return 0;
}


### 常见的循环类型及其应用场景 在编程领域,循环是一种重要的控制结构,用于多次执行一段代码直到满足特定条件为止。以下是几种常见类型循环及其典型应用场景: #### 1. **`for` 循环** `for` 循环通常用来遍历已知范围内的数据集合或固定次数的操作。它非常适合处理数组、列表或其他容器对象中的元素。 - **特点**: `for` 循环提供了一种简洁的方式来定义初始化表达式、终止条件和增量操作。 - **适用场景**: 当需要迭代一个序列(如字符串、元组、字典、文件等),或者当确切知道要运行多少次时使用此循环。 例如,在 C++ 中高效利用 `for` 循环可以显著提升性能[^1]: ```cpp // 使用 for 循环计算前 n 个自然数之和 int sum = 0; for(int i=1; i<=n; ++i){ sum += i; } ``` #### 2. **`while` 循环** `while` 循环适用于未知具体迭代次数的情况,只要给定布尔条件保持为真就会继续执行。 - **特点**: 它依赖于动态变化的状态来决定何时停止。 - **适用场景**: 如果无法预先确定循环体应被执行几次,则可以选择这种形式;比如等待某个外部事件发生后再退出循环。 下面是一个简单的 Python 实现例子展示如何通过 while 进行输入验证[^3]: ```python number = None while number is None or not (isinstance(number, int) and number >=0 ): try: user_input = input("请输入正整数:") number=int(user_input) except ValueError as e : pass print(f'您输入的有效数值为 {number}') ``` #### 3. **嵌套循环** 有时一个问题可能涉及多层逻辑关系,这时就需要采用嵌套循环的形式——即在一个循环内部再放置另一个完整的循环语句。 - **特点**: 可以表示二维甚至更高维度上的复杂模式匹配过程。 - **适用场景**: 处理矩阵运算、图形绘制等问题时常会遇到这种情况。 考虑这样一个 Java 并发环境下模拟银行账户转账的例子[^2] ,其中涉及到双重锁定机制防止竞态条件的发生: ```java synchronized(accountA.getLock()){ synchronized(accountB.getLock()){ accountA.withdraw(amount); accountB.deposit(amount); } } ``` 以上就是一些主要的循环种类连同它们各自的优劣分析以及实际运用场合概述。每一种都有其独特之处,并且针对不同需求有着各自最佳表现形态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值