zoukankan      html  css  js  c++  java
  • 基于范围的for循环

    基于范围的for循环是一种可以针对数组中每个元素迭代一次的循环每次进行该循环迭代时,就会将一个元素从数组复制带变量。基于范围的for循环是C++ 11中的新功能。

      C++ 11提供了一个特殊版本的for循环,在很多情况下,它都可以简化数组的处理,这就是基于范围的for循环(Rang-Based for Loop)。在使用基于范围的for循环处理数组时,该循环可以自动为数组中的每个元素迭代一次。例如,如果对一个8元素的数组使用基于范围的for循环,则该循环将迭代8次。因为基于范围的for循环可以自动知道数组中的个数,所以不必使用计数器变量控制其迭代,也不必担心数组下标越界的问题。

      基于范围的for循环使用了一个称为范围变量(Range Variable)。每次基于范围的for循环迭代时,它都会复制下一个数组元素到范围变量。例如,第一次循环迭代,范围变量将包含元素0的值;第二次循环迭代,范围变量将包含元素1的值,以此类推。

      以下是基于范围的for循环的一般格式:

      for(dataType rangeVariable : array)

        statement;

      现在来仔细看看该格式的各个部分。

      dataType范围变量的数据类型。它必须与数组元素的数据类型一样,或者是数组元素可以自动转换过来的类型。

      rangeVariable范围变量的名称。该变量将在循环迭代期间接收不同数组元素的值。在第一次循环迭代期间,它接收的是第一个元素的值,在第二次循环迭代期间,它接收的是第二个元素的值;以此类推。

      array是要让循环进行处理的数组的名称。该循环将对数组中的每个元素迭代一次。

      statement是在每次循环迭代期间要执行的语句。要在循环中执行更多的语句,则可以使用一组大括号来包围多个语句。

      例如,假设已经定义了以下数组:int numbers[] = {3, 6, 9};

      可以使用基于范围的for循环来显示numbers数组的内容。语句如下:

      for ( int val : numbers)

      {

        cout << "The next value is ";

        cout << val << endll;

      }

      因为numbers数组有3个元素,所以该循环将迭代3次。第一次它迭代时,val变量将接受numbers[0]中的值;在第二次循环迭代期间,它将接收numbers[1]的值;在第三次循环迭代期间,它将接收numbers[2]的值。所以,该代码将产生以下输出结果:

      The next value is 3

      The next value is 6

      The next value is 9

      如果需要的话,可以使用auto关键字指定范围变量的数据类型,而不必手动指定,示例如下:

      for ( auto val : numbers)

      {

        cout << "The next value is ";

        cout << val << endll;

      }

    使用基于范围的for循环来显示一个string变量的元素。

    #include <iostream>
    #include <string>

    using namespace std;

    int main()
    {
      string planets[] = {"Mercury", "Venus", "Earth", "Mars",
              "Jupiter", "Saturn", "Uranus",
              "Neptune", "Pluto(a dwarf planet)"};

      cout<<"Here are the planets: ";

      for(string val : planets)
        cout << val <<endl;

      return 0;
    }

    结果:

       使用基于范围的dor循环来修改数组

      当基于范围的for循环执行时,其范围变量将仅包含一个数组元素的副本。因此,不能使用基于范围的for循环来修改数组的内容,除非将范围变量声明为一个引用。

      要将范围变量声明为引用变量,可以在循环头的范围变量名称添加一个&符号。以下代码即显示了这样一个示例,它使用了基于for循环来将用户输入的数据存储到一个数组中。

    #include <iostream>
    #include <string>

    using namespace std;

    int main()
    {
      const int SIZE = 5;
      int numbers[SIZE];

      //Get values for the array
      for(auto &val : numbers)
      {
        cout << "Enter an integer value: ";
        cin >> val;
      }

      //Display the values in the array
      cout << " Here are the values you entered: ";

      for(auto val :numbers)
        cout << val << " ";

      cout << endl;
      return 0;
    }

    结果:

    基于范围的for循环和常规for循环对比

    基于范围的for循环可用于需要遍历数组所有元素的任何情形,并且不需要使用元素下标。但是,如果出于某些目的需要使用元素小标时,基于范围的for循环就不能使用了。另外,如果循环控制变量被用于访问两个或两个以上不同数组的元素,那么它也不适合使用。在这种情况下,可以使用常规for循环

    注意:引用范围变量也可以使用auto关键字。如上示例所示。

  • 相关阅读:
    前端之JQuery
    前端之BOM和DOM
    前端之js
    Django之创建项目、目录层级、基本操作
    前端小练习-Michael的博客界面(粗糙版)
    前端之CSS(下)
    Django简介(MVC、MTV)
    react中自定义函数、生命周期钩子函数、修改状态、组件、组件传值
    react中类组件、函数组件、state、单层遍历、多层遍历、先遍历后渲染、if-else、三目运算符
    搭建react的架手架
  • 原文地址:https://www.cnblogs.com/ruigelwang/p/12607471.html
Copyright © 2011-2022 走看看