1. 算術式:
#include <iostream>
int
main() {
int
arr[4];
std::cout <<
sizeof
( arr ) /
sizeof
( arr[0] ) << std::endl;
// 输出4
}
|
若しくは
#include <iostream>
int
main() {
int
arr[4];
std::cout <<
sizeof
( arr ) /
sizeof
( *arr ) << std::endl;
// 输出4
}
|
2. 関数テンプレートのパラメータが自動的に推論します:
#include <iostream>
template
<
typename
T,
size_t
N>
inline
size_t
Count( T ( & arr )[N] ) {
return
N;
}
int
main() {
int
arr[4];
std::cout << Count( arr ) << std::endl;
// 输出4
}
|
3.標準C ++テンプレートライブラリ:
#include <type_traits> // 注意包含此头文件.
#include <iostream>
int
main() {
int
arr[4];
std::cout << std::extent<
decltype
( arr ), 0>::value << std::endl;
// 输出4
}
|
前記自動型推論のテンプレートは、文献:
include <iostream>
template
<
typename
T>
class
ComputeSize;
template
<
typename
T,
size_t
N>
class
ComputeSize<T[N]> {
public
:
static
const
size_t
value = N;
};
int
main() {
int
arr[4];
std::cout << ComputeSize<
decltype
( arr )>::value << std::endl;
// 输出4
}
|
#include <cstdlib>
#include <iostream>
int
main() {
int
arr[4];
std::cout << _countof( arr ) << std::endl;
// 输出4.
}
|
6. Boostライブラリ:
#include "boost/range.hpp"
#include <iostream>
int
main(){
int
arr[4];
std::cout << boost::size( arr ) << std::endl;
// 输出4
}
|
上記の方法は、動的配列静的配列に適している(新しい新規[])を得ることができない要素の数です。
上記のコードは、上記のテストコードやコンパイラは、コンパイルコンパイルして実行します(次のページで最新バージョンに失敗していないかどうかを確認するために、独自にコンパイルして実行することができますのVisual C ++):
http://webcompiler.cloudapp.net/
-
#include「string.hの」
STRLEN(A)を見つける文字配列のサイズがあります
-
sizeof(A)/はsizeof([0]);これは、実質的に普遍的な
-