C++11的特性:基于范围的for循环

C++11引入的新式for循环语法,允许遍历数组、容器和大括号初始化的列表。使用auto关键字自动推断元素类型,通过引用可以修改容器中的值。例如,可以遍历字符串包括结束符,遍历vector容器以及遍历数值列表。
摘要由CSDN通过智能技术生成

1、简介

C++ 11 标准中,为 for 循环添加了一种全新的语法格式,如下所示:

for (declaration : expression){
    //循环体
}
  • declaration:表示此处要定义一个变量,该变量的类型为要遍历序列中存储元素的类型。需要注意的是,C++ 11 标准中,declaration 参数处定义的变量类型可以用 auto 关键字表示,该关键字可以使编译器自行推导该变量的数据类型。
  • expression:表示要遍历的序列,常见的可以为事先定义好的普通数组或者容器,还可以是用 {} 大括号初始化的序列。

C++11 标准增加的 for 循环,只会逐个遍历 expression 参数处指定序列中的每个元素。

2、用法

2.1 expression 用普通的数组

char arc[] = "http://c.biancheng.net/cplus/11/";
//for循环遍历普通数组
for (char ch : arc) {
    // 会包括了数组中最后一个字符 '\0'
}

新格式的 for 循环在遍历字符串序列时,不只是遍历到最后一个字符,还会遍历位于该字符串末尾的 ‘\0’(字符串的结束标志)。

2.2 expression 用容器

vector<char>myvector(arc, arc + 23);
//for循环遍历 vector 容器
for (auto ch : myvector) {
    // ...
}

程序中在遍历 myvector 容器时,定义了 auto 类型的 ch 变量,当编译器编译程序时,会通过 myvector 容器中存储的元素类型自动推导出 ch 为 char 类型。注意,这里的 ch 不是迭代器类型,而表示的是 myvector 容器中存储的每个元素。

2.3 expression 用{ }大括号初始化的列表

新语法格式的 for 循环还支持遍历用{ }大括号初始化的列表,比如:

for (int num : {1, 2, 3, 4, 5}) {
    // ...
}

3、修改 expression 中的值

vector<char>myvector(arc, arc + 5);
//for循环遍历并修改容器中各个字符的值
for (auto &ch : myvector) {
    ch++;
}

这里的 ch 是引用形式的,所以可以将 myvector 中每个元素 +1。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值