#include <iostream>
using namespace std;
int vowels[] = {65, 69, 73, 79, 85, 97, 101, 105, 111, 117}; // ASCII codes (upper & lower case).
bool characterInArray(char letter, int arr[]) {
return find(begin(arr), end(arr), (int) letter) != end(arr);
}
int main() {
if (characterInArray('i', vowels)) {
cout << "Found a vowel in the character provided." << endl;
}
return 0;
}
给定此代码,我给出了一个错误"错误:呼叫"开始"的匹配函数。完整的错误消息在下面,我在这里做错了什么?
candidate template ignored: could not match 'initializer_list<type-parameter-0-0>' against 'int *'
在C 中,像int arr[]
这样的函数参数为调整为 int* arr
,这就是begin()
和end()
不起作用的原因。您可以通过传递对数组const int (&arr)[10]
的引用来解决此问题,但是删除功能并以正确的谓词调用any_of
可能更简单,
if (any_of(begin(vowels), end(vowels),
[](char c) { return c == 'i'; }) { ... }