将数组作为函数参数传递,并在其上调用开始/结束方法
Passing array as function parameter, and calling begin/end methods on it
#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'; }) { ... }
相关文章:
- 当回溯以零开始时,如何调试崩溃
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- 为什么使用 "this" 指针调用派生成员函数?
- 函数调用中参数的顺序重要吗
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 是什么能让dynamic_cast开始抛出 std:bad_cast 即使被调用在指针上?
- 如果绝对没有调用成员函数,是否允许使用不完整类型的向量?如果是这样,从什么时候开始
- 将数组作为函数参数传递,并在其上调用开始/结束方法
- C++ 指针上的开始/结束 (arr) - 调用 'begin(int**&)' 没有匹配函数
- OpenCL 内核执行在调用 clFinish 或 clWaitForEvents 之前不会开始
- 错误:调用"开始(常量无符号 int&)"没有匹配函数|
- 通过 using-指令调用开始和结束
- 从第二次调用开始在函数中执行一段代码
- "开始"不调用运行
- std::vector 的运算符 [] 是否在<type>每次调用时从头开始遍历向量
- 在简单c++程序开始时的一系列strcmp()调用
- 匹配开始/结束分析调用