📜  C++ STL-algorithm.for_each()函数(1)

📅  最后修改于: 2023-12-03 14:39:50.567000             🧑  作者: Mango

C++ STL-algorithm.for_each()函数

在 C++ STL(标准模板库)中,algorithm 提供了许多常用的算法函数,其中之一就是 for_each() 函数。该函数用于迭代容器中的元素,并对每个元素执行用户指定的操作。for_each() 函数是一个非常有用的函数,可以帮助程序员提高代码的可读性和简洁性。

语法

for_each() 函数的语法如下:

template<class InputIt, class UnaryFunction>
UnaryFunction for_each(InputIt first, InputIt last, UnaryFunction f);
  • InputIt:表示输入迭代器的类型,用于指示要遍历的容器的起始和结束位置。
  • UnaryFunction:表示一元函数的类型,用于指定要对每个元素执行的操作。
  • first:表示要遍历的容器的起始位置的迭代器。
  • last:表示要遍历的容器的结束位置的迭代器,不包括该位置上的元素。
  • f:表示要对每个元素执行的操作的函数对象。
功能

for_each() 函数将对给定的容器范围中的每个元素调用指定的函数。函数对象 f 将被调用,并传递当前元素作为参数。该函数不返回任何值,因此通常用于执行某些操作,而不是修改元素本身。常见用例包括打印容器中的元素、计算元素的总和等等。

示例

下面是一个示例,演示了如何使用 for_each() 函数打印容器中的元素:

#include <iostream>
#include <vector>
#include <algorithm>

void print(int num) {
    std::cout << num << " ";
}

int main() {
    std::vector<int> nums = {1, 2, 3, 4, 5};

    std::cout << "Elements in the container: ";
    std::for_each(nums.begin(), nums.end(), print);

    return 0;
}

输出结果为:

Elements in the container: 1 2 3 4 5

在上述示例中,我们定义了一个函数 print(),它接受一个整数作为参数,并打印该整数。然后,我们使用 for_each() 函数遍历了 nums 容器中的每个元素,并对每个元素调用 print() 函数进行打印。

注意事项
  • f 函数对象的返回类型必须是 void
  • for_each() 函数不保证遍历顺序,因此函数对象 f 可能会以任意顺序被调用。
  • 对于只读操作,建议使用 lambda 表达式作为函数对象,可以更简洁地定义操作逻辑。

以上就是 C++ STL 中 for_each() 函数的介绍。通过使用该函数,您可以更轻松地对容器中的元素执行操作,提高代码的清晰度和可读性。