c++ foreach函数
时间: 2023-12-17 09:02:22 浏览: 163
C++中的for_each是一个通用的算法,用于对容器中的所有元素执行给定的函数。它是C++标准库的一部分,定义在<algorithm>头文件中。for_each函数主要用于遍历容器,如vector、list、set等,对容器中的每个元素执行特定操作。其函数原型如下:
template <class InputIterator, class Function>
Function for_each(InputIterator first, InputIterator last, Function fn);
要使用并行版本的std::for_each,需要包含<execution>头文件,并将合适的执行策略传递给函数。下面是一个简单示例,演示了如何使用并行std::for_each遍历std::vector容器,并为每个元素加1:
#include <iostream>
#include <vector>
#include <algorithm>
#include <execution>
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5};
std::for_each(std::execution::par, numbers.begin(), numbers.end(), [](int& value) {
value++;
});
for (int number : numbers) {
std::cout << number << " ";
}
return 0;
}
除了使用lambda表达式,你还可以使用仿函数(Function Object)作为for_each的第三个参数。下面是一个使用仿函数的示例:
#include <iostream>
#include <vector>
#include <algorithm>
class Fun {
public:
void operator()(const int num) {
std::cout << num << " ";
}
};
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5};
std::for_each(numbers.begin(), numbers.end(), Fun());
return 0;
}
阅读全文