在C 中实现IN_Array
Implement in_array in c++
很容易在向量中找到一个项目,我们知道如何。如果我们知道数组的长度,也可以在数组中找到一个项目。但是,从C 11开始,宣布STD :: End(),看来我们可以通过调用其指针来获得数组的大小,对吗?
因此此代码有效:
int arr[] = {1,2,3,4,5};
int needle = 3;
std::find(begin(arr), end(arr), needle);
int* result = find(begin(arr), end(arr), needle);
bool exists = result!=end(arr);
但是,如果将其转换为函数:
bool in_array(int arr[], int needle){
int* result = std::find(begin(arr), end(arr), needle);
return result!=end(arr);
}
不会编译:
错误:呼叫" begin(int*&)’int*结果=无匹配函数= std :: find(std :: begin(arr),std :: end(arr),针);
目的是制作一个工作功能,以将任何类型的数组发送到它,就像PHP的in_array
一样:
template <typename T>
T in_array(T arr[],T needle){
T* result = std::find(begin(arr), end(arr), needle);
return result!=end(arr);
}
为什么此代码不起作用?C 编译器是否存储某种局部变量来确定arr
的结束?
此行:
int arr[] = {1,2,3,4,5};
不是创建类型int[]
而不是int[5]
的数组。您可以通过询问数组的大小来检查此问题,它将返回sizeof(int)*5
。
但是,对于该功能,您不会传递大小(请参阅数组衰减后的错误消息),只是指针,因此不可能获得end()
。
您可以做的也是通过大小(未测试,但应该很好):
template <typename T, int N>
bool in_array(T arr[N],T needle){
T* result = std::find(begin(arr), end(arr), needle);
return result!=end(arr);
}
错误:呼叫" begin(int*&amp;)'int* result = std :: find(std :: std :: begin(arr),std :: end(arr),针头),/blockquote>
有
int arr[] = {1,2,3,4,5};
元素的大小/数量,如果已知,则在
中bool in_array(int arr[], int needle){
元素的数量未知,
array
只是被称为int
相关文章:
- netcat command in c++
- Difference in displaying cv2 Mat
- C++ MFC Libraries in Travis CI
- 如何在OpenSSL中从configuration.h.in获取configuration.h
- 创建具有 new in 函数和"this is nullptr"异常的对象
- IN, OUT, INOUT Parameters
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 有人安装"IITB Simplecpp in mac"吗?
- C++11 中不同类型的对象的 std::array 的替代方案
- 从 C 样式字符串中删除子字符串 "in place" 在C++代码中
- 警告的原因是什么:"when type is in parentheses, array cannot have dynamic size"?
- 2D Array in C++ -
- "Error creating variant or safe array" in TClientDataSet.LoadFromStream() in Delphi
- SWIG/Lua typemap for Boost Array in
- <byte>Array^ in Win32
- problrm with array in c++
- 包装方法返回 c++ std::array<std::string, 4> in cython
- (Pop in Array Based Stack)是否删除元素?
- C++ CRTP in array
- 刽子手游戏 - 同时循环与条件"contained in an array"