21xrx.com
2024-11-10 00:23:58 Sunday
登录
文章检索 我的文章 写文章
C++中的forEach语句详解
2023-07-05 12:56:39 深夜i     --     --
C++ forEach语句 详解 循环语句 迭代器

在C++中,forEach语句(或者称为range-based for loop)是一种方便快捷的循环遍历语法。它被广泛用于遍历数组、容器等简单集合类型,也可以使用自定义类型进行遍历。

forEach语句的形式如下:


for (element : collection)

  // 对element进行操作

其中,element表示集合中的每个元素,collection表示需要遍历的集合。在循环体内,可以对每个元素进行操作。

需要注意的是,这里的collection必须是一个可迭代(iterable)类型,也就是说需要支持begin()和end()方法。C++中,数组、string、vector、set、map等STL容器都是可迭代的。

foreach语句的执行过程是这样的:首先调用collection.begin()方法返回一个指向集合起始位置的迭代器,然后将元素取出进行操作,再调用迭代器++方法指向下一个元素,然后继续下一次循环,直到所有元素遍历完毕。

例如,可以使用foreach语句遍历一个整型数组并输出其所有元素:


int array[] = 1;

for (int element : array)

  cout << element << endl;

输出结果:


1

2

3

4

对于STL容器,也可以使用foreach语句进行遍历。例如,使用vector容器存储一组字符串,然后输出它们的长度:


vector<string> strings = {"hello", "world", "c++"};

for (string element : strings) {

  cout << element << "长度为:" << element.length() << endl;

}

输出结果:


hello长度为:5

world长度为:5

c++长度为:3

如果需要在循环体内改变集合元素的值,也可以使用引用类型进行遍历。例如,将数组中的所有元素乘以2:


int array[] = 3;

for (int &element : array) {

  element *= 2;

}

for (int element : array)

  cout << element << endl;

输出结果:


2

4

6

8

除此之外,C++的forEach语句还支持使用auto关键字来自动推导迭代器类型,可以进一步简化循环遍历的代码。例如:


vector<int> vec = 1;

for (auto element : vec)

  cout << element << endl;

总之,使用C++的forEach语句可以使代码更加简洁明了,减少了细节上的出错可能性。它是C++语言中一个非常实用的语法糖,不妨在工程项目中尝试使用。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复