bool isEven(int val) {
return val % 2 == 0;
}
bool isOdd(int val) {
return val % 2 != 0;
}
template<class Iterator>
int count_function(Iterator start, Iterator end, auto criteria) {
int count = 0;
for (; start != end; ++start) {
if (criteria(*start)) {
count++;
}
}
return count;
}
Run Code Online (Sandbox Code Playgroud)
上面是我的代码,自动在条件给出错误之前“现在允许此处自动”。我想为此功能提供isEven / isOdd标准。
这是为什么?
我已经尝试过int,bool-这会返回更多问题。
普通函数参数中不允许使用 Auto。它只允许在 lambda 参数中使用。C++20 将添加此功能:)
另请参阅“缩写函数模板”,此处:
https://en.cppreference.com/w/cpp/language/function_template#Abbreviated_function_template
现在,您可以不用使用 lambda 来声明您的函数:
auto count_function = [](auto start, auto end, auto criteria)
{
int count = 0;
for (; start != end; ++start) {
if (criteria(*start)) {
count++;
}
}
return count;
};
Run Code Online (Sandbox Code Playgroud)
auto函数参数中不允许使用关键字。如果要使用其他数据类型,则需要使用模板。
template<class Iterator, class T>
int count_function(Iterator start, Iterator end, T criteria) {
int count = 0;
for (; start != end; ++start) {
if (criteria(*start)) {
count++;
}
}
return count;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
85 次 |
| 最近记录: |