大家好,我是发哥,今天我们来说说C++11基于范围的for循环。
C++ 11标准之前(C++ 98/03 标准),for循环语法格式如下:
for(表达式 1; 表达式 2; 表达式 3){
//循环体
}
C++ 11基于范围的for循环,语法格式如下:
for (declaration : expression){
//循环体
}
其中declaration:表示此处要定义一个变量,该变量的类型为要遍历序列中存储元素的类型。需要注意的是,C++ 11 标准中,declaration参数处定义的变量类型可以用 auto 关键字表示,该关键字可以使编译器自行推导该变量的数据类型。
expression:表示要遍历的序列,常见的可以为事先定义好的普通数组或者容器,还可以是用 {} 大括号初始化的序列。
由此可可以看出,C++11同 C++ 98/03 中 for 循环的语法格式相比较,此格式并没有明确限定 for 循环的遍历范围,这是它们最大的区别,即旧格式的 for 循环可以指定循环的范围,而 C++11 标准增加的 for 循环,只会逐个遍历 expression 参数处指定序列中的每个元素。
示列代码如下:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
char buf[] = "大家好,我是发哥,你们好";
int i;
int len = sizeof(buf);
{
//C++ 98/03 标准 for循环
cout << "c++ 98/03 for start" << endl;
for (i = 0; i < len; i++)
{
cout << buf[i];
}
cout << endl;
vector<char>value_vector(buf,buf+len);
vector<char>::iterator iter;
//vector 容器
for (iter = value_vector.begin(); iter != value_vector.end(); ++iter)
{
cout << *iter;
}
cout << endl;
cout << "c++ 98/03 for end" << endl;
}
{
//C++11 基于范围的for循环
cout << "c++11 基于范围的for循环 程序开始" << endl;
for (char ch : buf)
{
cout << ch;
}
cout << '!' << endl;
vector<char>value_vector(buf, buf + len);
//vector 容器
for (auto ch : value_vector)
{
cout << ch;
}
cout << '!' << endl;
cout << "c++11 基于范围的for循环 程序结束" << endl;
}
return 0;
}
代码运行结果如下:
今天就说到这,谢谢你的关注,记得点赞和评论哦,你的支持是我创建继续创造优秀作品的动力。