#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;
}
鉴于此代码,我收到错误“错误:没有匹配函数来调用”begin“。完整的错误信息如下,我在这里做错了什么?
candidate template ignored: could not match 'initializer_list<type-parameter-0-0>' against 'int *'
答案 0 :(得分:3)
在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'; }) { ... }