将数组作为函数参数传递,并在其上调用开始/结束方法

Passing array as function parameter, and calling begin/end methods on it

本文关键字:调用 开始 方法 结束 数组 函数 参数传递      更新时间:2023-10-16
#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'; }) { ... }