C++11基于范围的for循环代码示例

 更新时间:2024年06月26日 09:13:22   作者:大柏怎么被偷了  
这篇文章主要给大家介绍了关于C++11基于范围的for循环的相关资料,范围for循环(也称为C++11的基于范围的for循环)是一种简化迭代容器(如数组、向量、列表等)元素的方式,文中通过代码介绍的非常详细,需要的朋友可以参考下

范围for的引入

int main(void)
{
	int arr[] = { 1,2,3,4,5,6,7,8,9 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	for (int i = 0; i < sz; i++)
	{
		cout << arr[i] << " ";
	}
	return 0;
}

在C++98里面遍历一个数组,或者说是一个有范围的集合而言,对应程序员来说明循环的范围是多余的。

因此C++11中引入了基于范围的for循环,for循环后面的括号由冒号“:”分为俩部分:第一部分是范围内用于迭代的变量,第二部分则表示被迭代的范围。

for(declaration : range)
{}

declaration是变量声明,用于存储每次迭代中的元素值,可以是自定义的变量名,也可以是已有的变量名。
range是要遍历的容器或者迭代的对象。

【注意】与普通循环类似,可以用continue来结束本次循环,也可以用break来跳出整个循环。

int main(void)
{
	int arr[] = { 1,2,3,4,5,6,7,8,9 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	for (auto a : arr)
	{
		cout << a << " ";
	}
	return 0;
}

范围for的使用条件

1.for循环迭代的范围必须是确定的。

(1)对于数组而言,就是数组中第一个元素和最后一个元素的范围

(2)对于类而言,应该提供begin和end的方法,begin和end就是for循环迭代的范围

2.迭代的对象要实现++和==的操作。

对于数组而言,就是数组中第一个元素和最后一个元素的范围;对于类而言,应该提供beginend的方法,beginend就是for循环迭代的范围。

注意:以下代码就有问题,因为for的范围不确定

void TestFor(int array[])
{
    for(auto& e : array)
        cout<< e <<endl;
}

迭代的对象要实现++和==的操作

关于这个问题,我将在后续文章进行讲解,敬请期待,现在先了解一下基础概念

迭代器

迭代器(Iterator)是一种对象,用于遍历容器中的元素。它提供了一种统一的访问容器元素的方式,使得用户可以通过相同的方式访问不同类型的容器。

迭代器一般具有以下操作:

  • 通过*运算符获取当前迭代器指向的元素
  • 通过++运算符将迭代器向后移动到下一个元素
  • 通过==运算符判断两个迭代器是否相等
  • 通过!=运算符判断两个迭代器是否不相等

使用范围for循环时,可以使用迭代器来表示集合的起始位置和结束位置,范围for循环会自动遍历整个集合中的元素,不需要手动控制迭代器的移动和判断。这样就避免了使用传统的for循环需要手动管理迭代器的复杂性。

总结

到此这篇关于C++11基于范围的for循环的文章就介绍到这了,更多相关C++基于范围的for循环内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C++实现字符串和整数的相互转换

    C++实现字符串和整数的相互转换

    这篇文章主要为大家详细介绍了C++实现字符串和整数的相互转换的方法,文中的示例代码讲解详细,对我们学习C++有一定的帮助,需要的可以参考一下
    2023-01-01
  • C语言文件读写操作介绍与简单示例

    C语言文件读写操作介绍与简单示例

    这篇文章主要给大家介绍了关于C语言文件读写操作的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • C++取余符号%的实现示例

    C++取余符号%的实现示例

    本文主要介绍了C++取余符号%的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-02-02
  • C++实现扫雷小游戏(控制台版)

    C++实现扫雷小游戏(控制台版)

    这篇文章主要为大家详细介绍了C++实现控制台版的扫雷小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • C语言详解实现字符菱形的方法

    C语言详解实现字符菱形的方法

    字符菱形是指给定一个字符,用它构造一个对角线长5个字符,倾斜放置的菱形。输入输入只有一行, 包含一个字符。输出该字符构成的菱形
    2022-04-04
  • C语言 数据结构链表的实例(十九种操作)

    C语言 数据结构链表的实例(十九种操作)

    这篇文章主要介绍了C语言 数据结构链表的实例(十九种操作)的相关资料,需要的朋友可以参考下
    2017-07-07
  • C语言 位域详解及示例代码

    C语言 位域详解及示例代码

    本文主要介绍C语言 位域的知识,这里整理了相关资料,并附示例代码及详解,有兴趣的小伙伴可以参考下
    2016-08-08
  • OpenCV实现图像拼接案例

    OpenCV实现图像拼接案例

    这篇文章主要介绍了OpenCV实现图像拼接案例,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-08-08
  • C++ std::valarray 用法实例详解

    C++ std::valarray 用法实例详解

    std::valarray是C++标准库中用于数值数组计算的容器,支持高性能的向量化运算,其核心特性包括元素级运算、性能优化、子集访问和数学函数支持,本文给大家介绍C++ std::valarray用法详解,感兴趣的朋友一起看看吧
    2026-04-04
  • 详解C/C++中new A与new A()的区别

    详解C/C++中new A与new A()的区别

    这篇文章主要通过一些简单的示例为大家详细介绍一下C/C++中new A与new A()的区别,文中的示例代码简洁易懂,快跟随小编一起学习起来吧
    2023-07-07

最新评论