当前课程知识点:C++语言程序设计基础 > 第6章 数组、指针与字符串(一) > 基于范围的for循环 > 基于范围的for循环
基于范围的for循环
int main()
{
int array[3] = {1,2,3};
int *p;
for(p = array; p < array + sizeof(array) / sizeof(int); ++p)
{
*p += 2;
std::cout << *p << std::endl;
}
return 0;
}
int main()
{
int array[3] = {1,2,3};
for(int & e : array)
{
e += 2;
std::cout<<e<<std::endl;
}
return 0;
}
基于范围的for循环举例
大家好
欢迎回来继续学习
C++语言程序设计
这一节我们来学习
基于范围的for循环
我们在第二章
学过了循环语句
其中的for循环我们知道
是C++中
功能最强的一个循环语句
它可以把循环控制变量的初始化
循环条件的控制
以及循环变量的增值
都放在循环头中
这样看起来一目了然
那我们前面呢
也看到了
当我们用for循环
来处理整个数组的时候
来遍历数组元素的时候
我们是需要知道
这个数组
它一共有多少个元素的
这样我们才可以用for循环
来控制这个循环次数
对吧
那么现在呢
C++11给我们提供了一种
新的for循环语句
就是基于范围的for循环
它最擅长的就是
自动遍历整个容器
比如说
数组就是一个容器
那么用基于范围的for循环
就可以不用我们去控制
这个循环次数
它能自动把整个数组里面的元素
全都遍历一遍
接下来我们来看一个例子
对比一下
大家就知道
这个基于范围的for循环
在遍历数组的时候
它为什么很好用
现在我们来对比
左右两边的这两个程序
这两个程序呢
都是要遍历数组的元素
都是要遍历数组的元素
左边我们来看
采用的是什么办法呢
定义一个指针
将数组的首地址赋到指针里面
然后就用指针
去访问数组的每个元素
当然了
用数组下标去访问每个元素
也是可以的
那么我们要怎么控制它这个循环
转多少圈呢
就要知道
数组一共有多少个元素
如果我们只获得一个指针
一个首地址的话
那么元素的个数
就要这样计算出来
或者
我们定义一个固定大小的数组
我们知道它有多少个元素
那么
这就是一般的for循环的形式
再看看右边
是不是觉得更省事 更简洁了
这是基于范围的for循环
用这样的语法形式来写呢
就自动的能够从数组中
依次取出各个元素来
用来初始化这个e
大家看这个for循环呢
它不用管元素个数
一共有多少
用这种基于范围的形式
会自动地去计算出循环次数来
处理完数组里面的所有内容
这一个呢
在处理容器类的时候
更有用
我们在第九章会学到类模板
然后在第十章会接触到
stl中的那些可以作为容器的
这些类模板
当我们把数据存在这样的容器
其实数组也是个最简单的容器
能容纳一群数据
当我们把数据
存在这样的容器里面的时候
用这样基于范围的for循环
就可以自动的依次处理
全部的数据
所以大家看
这个是不是很方便
-导学
--第1章导学
-计算机系统简介
--计算机系统简介
--计算机系统简介 测试题
-计算机语言和程序设计方法的发展
--计算机语言和程序设计方法的发展 测试题
-面向对象的基本概念
--面向对象的基本概念 测试题
-程序的开发过程
--程序的开发过程
--程序的开发过程 测试题
-信息的表示和储存
--计算机的数字系统
--数据的编码表示
--信息的表示和储存 测试题
-实验指导
-导学
--第二章导学
-C++语言概述
--C++语言概述 测试题
-基本数据类型、常量、变量
--程序举例
--基本数据类型、常量、变量 测试题
-运算与表达式
--运算与表达式 测试题
-实验二:简单程序设计(上)
-数据的输入和输出
--数据的输入和输出
--数据的输入和输出 测试题
-选择结构
--if语句
--switch语句
--选择结构 测试题
-循环结构
--for语句
--循环结构 测试题
-自定义类型
--自定义类型
--自定义类型
-第2章小结
--第二章小结
-实验二:C++简单程序设计(下)
-导学
--导学
-函数定义
--函数定义
--函数定义 测试题
-函数调用
--例3-2
--例3-3
--例3-4
--例3-5
--例3-6
--函数调用 测试题
-嵌套与递归
--例3-9
--例3-10
--嵌套与递归 测试题
-函数的参数传递
--函数的参数传递
--函数的参数传递 测试题
-引用类型
--引用类型 测试题
-含有可变参数的函数
--含有可变参数的函数 测试题
-内联函数
--内联函数 测试题
-constexpr函数
--CONSTEXPR函数课后习题
-带默认参数值的函数
--带默认参数值的函数 测试题
-函数重载
--函数重载 测试题
-C++系统函数
--C++系统函数习题
-第3章小结
--第三章小结
-实验三(上)函数的应用
-实验三(下)函数的应用
-导学
--导学
-面向对象程序的基本特点
--面向对象程序的基本特点 测试题
-类和对象
--类和对象的定义
--类和对象 测试题
-构造函数
--构造函数基本概念
--委托构造函数
--复制构造函数
--构造函数 测试题
-析构函数
--析构函数
--析构函数 测试题
-类的组合
--类的组合
--类的组合程序举例
--前向引用声明
--类的组合 测试题
-UML简介
--UML简介
--UML简介课后习题
-结构体与联合体
--结构体与联合体 测试题
-枚举类
--枚举类
--枚举类 测试题
-第4章小结
--第四章小结
-实验四(上)
--实验四(上)
-实验四(下)
--实验四(下)
-导学
--导学
-标识符的作用域与可见性
--标识符的作用域与可见性 测试题
-对象的生存期
--对象的生存期
--对象的生存期 测试题
-类的静态成员
--类的静态成员 测试题
-类的友元
--类的友元 测试题
-共享数据的保护
--共享数据的保护 测试题
-多文件结构和预编译命令
--多文件结构和预编译命令 测试题
-第5章小结
--小结
-实验五
--实验五
-导学
--导学
-数组的定义与初始化
--数组的定义与使用
--一维数组应用举例
--数组的定义与初始化 测试题
-数组作为函数的参数
--数组作为函数的参数 测试题
-对象数组
--对象数组
--对象数组 测试题
-基于范围的for循环
-指针的定义和运算
--指针的定义和运算 测试题
-综合实例
--综合实例
-实验六(上)
--实验六上
-指针与数组
--指针数组
--指针与数组 测试题
-指针与函数
--指针类型的函数
--指向函数的指针
--指针与函数 测试题
-对象指针
--对象指针
--对象指针 测试题
-动态内存分配
--动态内存分配 测试题
-智能指针
--智能指针
-vector对象
--vector对象
--vector对象 测试题
-对象复制与移动
--移动构造
--对象复制与移动 测试题
-字符串
--C风格字符串
--string类
--字符串 测试题
-第6章小结
--第六章小结
-综合实例
--综合实例
-实验六(下)
--实验六(下)