[求助]一个C++题目(数组 指针)

题目:编写一个程序,对一个int数组中的任意两个元素按多种条件计数。例如:计算有多少对元素互为相反数,计算有多少对元素相邻(相差1)。要求编写一个通用函数,可用Lambda表达式描述不同条件

如果问题得到解决,请点我回答左上角的采纳按钮和向上的箭头

#include <iostream>
using namespace std;

template <typename F>
int count(int * a, int * b, int na, int nb, F const& pred) {
    int x = 0;
    for (int i = 0; i < na; i++)
        for (int j = 0; j < nb; j++)
            if (pred(a[i], b[j])) x++;
    return x;
}

int main() {

    int a[3] = { 1, 3, 31 };
    int b[2] = { 13, 2 };
    int n1 = count(a, b, 3, 2, [](int a, int b) -> int {
        return a - b == 1 || a - b == -1;
    });
    int n2 = count(a, b, 3, 2, [](int a, int b) -> int {
        return a % 10 == b / 10 && a / 10 == b % 10;
    });
    cout << n1 << endl;
    cout << n2 << endl;
}

图片说明