C++で配列長を求めたいのに
うわ、やられた。
配列長求められねぇ。
array.lengthができればどんなに快適か。
//テスト用のどうでもいいクラス //変数二つ用意しているのはクラスのサイズが4byteだと //アドレスのサイズと見分けがつかないので class Hoge{ int a; int b; }; //スタックの配列の長さを求める場合 int main(const int arg){ Hoge* hoge = new Hoge[20]; int one = sizeof(Hoge); //クラスのサイズ int all = sizeof(hoge); //配列全体のサイズ int len = all/one; //配列の長さ printf("%d %d %d",ne,all,len); //実行結果 //8 160 20 return 0; } //newなりmallocなりを使ったヒープの配列の長さの場合 int main(const int arg){ Hoge* hoge = new Hoge[20]; int one = sizeof(Hoge); //クラスのサイズ int all = sizeof(hoge); //配列全体のサイズ int len = all/one; //配列の長さ printf("%d %d %d",ne,all,len); //実行結果 //8 4 0 return 0; }
スタックならOKだけどヒープだとだめだ。Hoge型のアドレスが返ってきやがる。
動的に作った配列の長さはわかんない。
自分で配列クラスを作って、new MyArray(Length) した時にlengthを保持して
myArray->getLength()とかできるようにすればいいのか。
……
だからBrewArrayクラスがあるのか。
「良く分からないけど使わないでいいや」はやっぱ危険だorz