脚本之家

电脑版
提示:原网页已由神马搜索转码, 内容由www.jb51.net提供.
您的位置:首页软件编程C 语言→ C++基于范围的for循环

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++抽象基类讲解,象基类abstract base class简称ABC,C++实现继承的时候,需要保证派生类和基类之间是一种is-a的关系。在大多数时刻,这样的关系是没有问题的,然而在一些特殊的情况可能会遇到问题,下面来看看文章的具体介绍吧
      2022-01-01
    • 这篇文章主要介绍了C++字符数组的输入输出和符串结束标志使用讲解,是C++入门学习中的基础知识,需要的朋友可以参考下
      2015-09-09
    • 这篇文章主要介绍了简述C++中虚拟函数的内存分配机制,帮助大家更好的理解和学习c++,感兴趣的朋友可以了解下
      2020-08-08
    • 这篇文章主要为大家详细介绍了Qt自定义控件实现圆盘进度条,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
      2019-12-12
    • 这篇文章主要为大家介绍了C语言MFC导出dll回调函数方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
      2022-11-11
    • 今天小编就为大家分享一篇关于C++实现十六进制字符串转换成int整形值的示例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
      2018-12-12
    • 本文主要介绍了Qt中JSON操作的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
      2022-08-08
    • 在C/C++语言中,我们知道内存分为这几种:程序全局变量内存、栈内存、堆内存。其中堆内存就是通过malloc(new)来分配的内存,本文我们来探讨一下C标准库堆内存函数。
      2021-06-06
    • 本篇文章是对求32位机器上unsigned int的最大值及int的最大值的解决方法进行了详细的分析介绍,需要的朋友参考下
      2013-05-05
    • C++通过 public、protected、private 三个关键字来控制成员变量和成员函数的访问权限(也称为可见性),下面这篇文章主要给大家介绍了关于C++中访问权限的相关资料,需要的朋友可以参考下
      2021-07-07

    最新评论