每次操作两次

doc*_*ocp 0 c++ arrays for-loop

我希望每个功能都能完成两次.参数在数组中,所以它是这样的:

fun1(A[0]);
fun1(A[1]);

fun2(A[0]);
fun2(A[1]);

fun3(A[0]);
fun3(A[1]);
Run Code Online (Sandbox Code Playgroud)

有没有办法自动完成?我不能用

for(int i=0; i<2; i++)
Run Code Online (Sandbox Code Playgroud)

因为它将是:

fun1(A[0]);
fun2(A[0]);
fun3(A[0]);

fun1(A[1]);
fun2(A[1]);
fun3(A[1]);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,订单很重要.

Cor*_*mer 5

您可以使用函数指针遍历要在容器中的每个元素上调用的所有函数.例如

#include <iostream>
#include <vector>

void fun1(int i)
{
    std::cout << "fun1: " << i << "\n";
}

void fun2(int i)
{
    std::cout << "fun2: " << i << "\n";
}

int main()
{
    using fn_t = void(*)(int);
    std::vector<fn_t> funs{&fun1, &fun2};
    std::vector<int> A = {2, 5};

    for (auto& f : funs)
    {
        for (int i : A)
        {
            f(i);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

产量

fun1: 2
fun1: 5
fun2: 2
fun2: 5
Run Code Online (Sandbox Code Playgroud)