LoginSignup
14
12

More than 5 years have passed since last update.

C++で静的配列の要素数を取得する

Last updated at Posted at 2014-05-30

まぁ僕の好みはサイズ入りのクラスを作ることなんですが、
やんごとなき理由からレガシーなPOD配列使いたいこともあろうと思い、
ちょっとやってみた次第である。

コード

template<typename TYPE, std::size_t N> std::size_t numof(const TYPE (&)[N]){
    return N;
}

使い方

int test[16];
double test2[8];
float test3[4];
int test4;
myClass test5[256];

std::cout << numof(test) << std::endl;
//16

std::cout << numof(test2) << std::endl;
//8

std::cout << numof(test3) << std::endl;
//4

std::cout << numof(test4) << std::endl;
//コンパイルエラー!

std::cout << numof(test5) << std::endl;
//256

受け取っているのはただのリファレンスなので、重たい配列に適用させてもコピーが起こらないので安心。
しかしまぁ、それにしてもC++はこれくらい標準で入れといてくれても良かったのに、
とか思わないこともない。。。

2014/05/31追記

(コメント欄xeno1991さんありがとうございます。)
動的配列を入れるとどうなるでしょう?
コンパイルエラーで落ちます。
残念ながら、動的配列の要素数を得る手法は(僕の知ってる限りでは)ありません。
std::vectorを使えということだろうか…うーん。

14
12
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
12