我试图为此编写自己的函数,但结果错误
#include <iostream>
using namespace std;
template<typename T>
int array_length(T v[]) {
return (sizeof v)/sizeof(T);
}
int main() {
int v[] = {1, 2, 3, 4};
cout << array_length(v) << endl;
return 0;
}
答案 0 :(得分:6)
这样的事情:
#include <cstddef> // for size_t
template< typename T, std::size_t N >
std::size_t length( const T (&)[N] )
{
return N;
}
用法
int data[100];
std::cout << length(data) << "\n";
答案 1 :(得分:1)
长度由数组提供。所以试试这个:
template <typename T, std::size_t N> std::size_t length( T (&)[N] ) {
return N;
}
在标题<cstddef>
中找到 std::size_t
。它是无符号整数类型。