【发布时间】:2020-05-25 17:04:55
【问题描述】:
在下面的代码中,我想创建一个函数count,它计算整数/字符串的数量,该数量符合向量的匹配条件整数/字符串.
但是我不清楚函数定义怎么写。
#include <iostream>
#include <vector>
using namespace std;
bool match(int x) {
return (x % 2 == 0);
}
bool match(string x) {
return (x.length <= 3);
}
template <typename T>
int count(vector<T>& V, bool (*test)(<T>))
{
int tally = 0;
for (int i = 0; i < V.size(); i++) {
if (test(V[i])) {
tally++;
}
}
return tally;
}
int main()
{
vector <int> nums;
vector <string> counts;
nums.push_back(2);
nums.push_back(4);
nums.push_back(3);
nums.push_back(5);
counts.push_back("one");
counts.push_back("two");
counts.push_back("three");
counts.push_back("four");
cout << count(nums, match) << endl;
cout << count(counts, match) << endl;
}
原型应该怎么写?我意识到错误就在这条线上
int count (vector<T> &V , bool (*test)(<T>) )
【问题讨论】:
-
bool (*test)(<T>)->bool (*test)(T),还有(x.length <= 3);->(x.length() <= 3); -
请在问题中包含错误
标签: c++ templates function-pointers stdvector function-templates