第五章_语句_5.4 迭代语句

本文详细介绍了C++中的迭代语句,包括while、传统for、范围for和do...while循环。讲解了它们的语法形式、执行流程及适用场景。特别强调了while和do...while的区别,以及for语句中的init-statement、condition和expression的用法。还展示了如何在不同情况下选择合适的循环结构,并给出了实际示例。
摘要由CSDN通过智能技术生成

5.4 迭代语句

whilefor语句在执行循环体之前检查条件,do while语句先执行循环体,然后再检查条件。

5.4.1 while 语句

只要条件为真,while 语句就重复的执行循环体,它的语法形式如下:

while (conditon)
	statement

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

定义在 while 条件部分或者 while 循环体内的变量每次迭代都经历从创建到销毁的过程。

使用 while 循环

当不确定到底要迭代多少次时,使用 while 循环比较合适。想在循环结束后访问循环控制变量也应该使用 while.

vector<int> v;
int i;
while (cin >> i)
    v.push_back(i);
// 寻找第一个负值元素
auto beg = v.begin();
while (beg != v.end() && *beg > 0)
    ++beg;
if (beg == v.end())
    // 此时我们直到 v 中的所有元素都大于等于 0

5.4.2 传统的 for 语句

for 语句的语法形式是:

for (init-statement; condition; expreesion)
	statement;

init-statement负责初始化一个值,必须是以下三种形式中的一种:声明语句、表达式语句或者空语句。

condition控制循环的条件,

expression负责修改init-statement初始化的变量。

传统 for 循环的执行流程

for 语句头中定义的对象只在 for 循环体可见。

for 语句头中多重定义

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

// 记录下 v 的大小,当到达原来的最后一个元素后结束循环
for (decltype(v.size()) i = 0, sz = v.size();
    	i != sz; ++i)
    v.push_back(v[i]);

省略 for 语句头的某些部分

for 语句头能省略掉init-statementconditionexpression中的任何一个(或者全部)。

如果无需初始化,则我们可使用一条空语句作为init-statement

省略condition的效果等价于在条件部分写了一个 true。因为条件的值永远是 true,所以在循环体内必须有语句负责退出循环,否则循环就会无休止地执行下去。

省略expression要求条件部分或者循环体必须改变迭代变量的值。

5.4.3 范围 for 语句

范围 for 语句可以遍历容器或其他序列的所有元素。语法形式如下:

for (declaration : expression)
	statement;

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

declaration定义一个变量,序列中的每个元素都得能转换成该变量的类型。

5.4.4 do while 语句

do while 语句先执行循环体后检查条件。语法形式如下:

do 
	statement
while (condition);

注意:condition使用的变量必须定义在循环体之外。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值