for循环迭代的不同变体有哪些?

1. for循环基本语法

for循环是C++中最重要的循环结构之一。它的基本形式如下:

for (初始化表达式; 条件表达式; 更新表达式)

{

循环执行语句;

}

其中,初始化表达式在循环开始前执行,用于设置循环变量的初始值;条件表达式在每次循环开始前求值,如果为真,则继续循环,否则跳出循环;更新表达式在每次循环结尾时执行,用于改变循环变量的值。

2. for循环的变体

2.1. 嵌套for循环

嵌套for循环指的是在一个for循环结构内嵌套另一个for循环结构。这种循环结构在需要遍历多维数组时非常有用。下面是一个简单的示例:

#include <iostream>

using namespace std;

int main()

{

int arr[3][2] = {{1,2},{3,4},{5,6}};

// 遍历二维数组

for (int i = 0; i < 3; i++)

{

for (int j = 0; j < 2; j++)

{

cout << arr[i][j] << " ";

}

cout << endl;

}

return 0;

}

上述代码中,第一个for循环变量i代表行数,第二个for循环变量j代表列数,通过嵌套循环遍历了整个二维数组。

2.2. range-based for循环

range-based for循环是C++11引入的一种新的for循环结构,也被称作foreach循环。它可以方便地遍历一个容器类型(如数组、向量、列表等)。下面是一个示例:

#include <iostream>

#include <vector>

using namespace std;

int main()

{

vector<int> v = {1, 2, 3, 4, 5};

// 遍历vector容器

for (int i : v)

{

cout << i << " ";

}

cout << endl;

return 0;

}

上述代码中,range-based for循环中,变量i遍历了整个vector容器,输出了每个元素的值。

2.3. 倒序for循环

倒序for循环指的是按照从大到小的顺序遍历一个区间。在某些情况下,如果我们需要从一个区间的右端开始遍历,这种循环结构非常有用。下面是一个简单的示例:

#include <iostream>

using namespace std;

int main()

{

int arr[5] = {1, 2, 3, 4, 5};

// 倒序遍历数组

for (int i = 4; i >= 0; i--)

{

cout << arr[i] << " ";

}

cout << endl;

return 0;

}

上述代码中,for循环中的变量i从数组的右端开始遍历,输出了每个元素的值。

2.4. 循环中断和跳过

在for循环中,可以使用break关键字跳出循环,也可以使用continue关键字跳过当前的迭代。下面是一个示例:

#include <iostream>

using namespace std;

int main()

{

int arr[5] = {1, 2, 3, 4, 5};

// 跳过奇数并输出偶数

for (int i = 0; i < 5; i++)

{

if (arr[i] % 2 == 1) // 如果是奇数就跳过

{

continue;

}

cout << arr[i] << " ";

}

cout << endl;

// 遇到3时跳出循环

for (int i = 0; i < 5; i++)

{

if (arr[i] == 3) // 如果是3就跳出循环

{

break;

}

cout << arr[i] << " ";

}

cout << endl;

return 0;

}

上述代码中,第一个for循环中,如果数组元素是奇数,就跳过当前迭代,只输出偶数;第二个for循环中,如果数组元素是3,就跳出循环。

3. 总结

本文介绍了for循环的基本语法,以及for循环的四种变体:嵌套for循环、range-based for循环、倒序for循环、循环中断和跳过。这些循环结构可以帮助我们更方便地遍历数组、容器以及其他序列类型的数据。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签