【C++基础】第三十一课:迭代语句

【C++基础】系列博客为参考《C++ Primer中文版(第5版)》C++11标准)一书,自己所做的读书笔记。

1.迭代语句

迭代语句通常称为循环,它重复执行操作直到满足某个条件才停下来。while和for语句在执行循环体之前检查条件,do while语句先执行循环体,然后再检查条件。

2.while语句

语法形式:

while (condition)
	statement

在while结构中,只要condition的求值结果为真就一直执行statement(常常是一个块)。condition不能为空,如果condition第一次求值就得false,statement一次都不执行。

3.传统的for语句

for语句的语法形式是:

for (init-statement;condition;expression)
	statement

关键字for及括号里的部分称为for语句头。init-statement必须是以下三种形式中的一种:声明语句、表达式语句或者空语句

一般情况下,init-statement负责初始化一个值(只在循环开始时执行一次),这个值将随着循环的进行而改变。condition作为循环控制的条件,只要condition为真,就执行一次statement。如果condition第一次的求值结果就是false,则statement一次也不会执行。expression负责修改init-statement初始化的变量,这个变量正好就是condition检查的对象,修改发生在每次循环迭代之后

int val;
val = 0;
for (; val < 5; val++) {
    val = 3;
    break;
}
cout << val << endl;//3

👉和其他的声明一样,init-statement也可以定义多个对象。但是init-statement只能有一条声明语句,因此,所有变量的基础类型必须相同

for (decltype(v.size()) i=0,sz=v.size();i!=sz;++i)
	v.push_back(v[i]);

👉for语句头能省略掉init-statement、condition和expression中的任何一个(或者全部)。例如:

vector<int> v;
for (int i; cin >> i ; /*表达式为空*/)
	v.push_back(i);

4.范围for语句

C++11新标准引入了一种更简单的for语句,这种语句可以遍历容器或其他序列的所有元素。范围for语句(range for statement) 的语法形式是:

for (declaration : expression)
	statement

expression表示的必须是一个序列,比如用花括号括起来的初始值列表、数组或者vectorstring等类型的对象,这些类型的共同特点是拥有能返回迭代器的begin和end成员。

declaration定义一个变量,序列中的每个元素都得能转换成该变量的类型。确保类型相容最简单的办法是使用auto类型说明符,这个关键字可以令编译器帮助我们指定合适的类型。如果需要对序列中的元素执行写操作,循环变量必须声明成引用类型。举个例子:

//把vector对象中的每个元素都翻倍
vector<int> v={0,1,2,3,4,5,6,7,8,9};
for (auto &r : v)
	r *= 2;

5.do while语句

do while语句(do while statement)和while语句的唯一区别是:do while语句先执行循环体后检查条件。

do
	statement
while (condition);//注意此处的分号

❗️condition不能为空,且使用的变量必须定义在循环体之外。因为对于do while来说先执行语句或者块,后判断条件,所以不允许在条件部分定义变量:

do{
	//......
	mumble(foo);
} while (int foo = get_foo());//错误:将变量声明放在了do的条件部分

想要获取最新文章推送或者私聊谈人生,请关注我的个人微信公众号:⬇️x-jeff的AI工坊⬇️

个人博客网站:https://shichaoxin.com

GitHub:https://github.com/x-jeff


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值