3

このために独自の関数を作成しようとしましたが、間違った結果が得られます

#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;
}
4

2 に答える 2

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";
于 2012-11-24T15:33:21.880 に答える
1

長さは配列によって提供されます。だからこれを試してください:

template <typename T, std::size_t N> std::size_t length( T (&)[N] ) {
    return N;
}

std::size_tヘッダーにあり<cstddef>ます。符号なし整数型です。

于 2012-11-24T15:34:10.040 に答える