C++11范围for

简介: C++11范围for

在C++98中,不同的STL容器和C风格数组的遍历方式各不相同,写法也不统一,而且不够简洁。而C++11基于范围的for循环可以简洁并且统一的方式遍历STL容器和C风格数组。

在介绍for循环新的语法之前,简单来看一下for循环之前遍历STL容器的例子

#include<iostream>
#include<vector>
int main()
{
  std::vector<int> vec = { 1,6,9,8,5,4,11 };
  for (auto it = vec.begin(); it != vec.end(); it++)
  {
    std::cout << (*it) << " ";
  }
  return 0;
}

我们在遍历的过程中需要给出容器的两端:开头(begin)和结尾(end),但它不是基于范围来遍历的。在基于范围的for循环中,不需要给出开头和结尾的迭代器,直接抽取容器中的元素进行计算,使用这种方法可以让编码更简单。

C++98中for循环的语法格式:

for(init;expression;update)
{
  //TODO(循环体内容)
}

注意:init指声明初始化的遍历的次数,expression限制初始值的数值,update更新初始值,也就是循环次数的累加。

C++11的for循环的语法格式:

for(declaration : expression)
{
  //TODO(循环体)
}

注意:在上面的语法格式中 declaration 表示遍历声明,在遍历过程中,当前被遍历到的元素会被存储到声明的变量中。expression 是要遍历的对象,它可以是表达式、容器、数组、初始化列表等。


推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家:

零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核)

https://xxetb.xet.tech/s/3Zqhgt


相关文章
|
6月前
|
存储 Cloud Native Linux
QtCreator中三种不同编译版本 debug、release、profile 的区别
QtCreator中三种不同编译版本 debug、release、profile 的区别
|
6月前
|
存储 编解码 Cloud Native
FFmpeg修复受损视频
FFmpeg修复受损视频
|
6月前
|
存储 Cloud Native Linux
C++ vector元素类型为什么不能是引用
C++ vector元素类型为什么不能是引用
|
6月前
|
存储 编解码 Cloud Native
C++ Qt关于多屏幕窗口处理
C++ Qt关于多屏幕窗口处理
|
6月前
|
存储 Cloud Native Ubuntu
音视频 ffmpeg命令直播拉流推流
音视频 ffmpeg命令直播拉流推流
|
6月前
|
存储 JSON Cloud Native
C++ QT获取本机公网IP和IP所在地
C++ QT获取本机公网IP和IP所在地
|
6月前
|
编译器
Qt获取当前所用的Qt版本、编译器、位数等信息
Qt获取当前所用的Qt版本、编译器、位数等信息
|
6月前
|
存储 Cloud Native 编译器
C++编译期多态与运行期多态
C++编译期多态与运行期多态
|
6月前
|
存储 Cloud Native Linux
C++ const关键字
C++ const关键字
|
6月前
新人乘风者礼品兑换指南
仅限2023年11月15日(含11月15日)后入驻博主用于兑换礼品,此前完成入驻的博主按原邮寄方式进行。
2414 2