C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

Vector2次元配列の取り扱い /Vec (19/01/07(Mon) 16:54) #89836
Re[1]: Vector2次元配列の取り扱い /774RR (19/01/07(Mon) 18:42) #89838


親記事 / ▼[ 89838 ]
■89836 / 親階層)  Vector2次元配列の取り扱い
□投稿者/ Vec (1回)-(2019/01/07(Mon) 16:54:39)

分類:[C/C++] 

2次元の可変長配列について

プログラムの途中で、要素数がはっきりした場合に要素数を指定したいと考えています。


1次元の時は次のようにして、キャパシティーと要素数を同じにしてメモリ容量を節約することができると考えました。


if(v.capacity() < 要素数){
v.reserve(要素数);
v.resize(要素数);
}
else{
v.resize(要素数);
v.shrink_to_fit();
}
※要素数は数字です。


では、2次元の時はどのように記述すれば良いのでしょうか。
インターネットで色々と検索してみましたが1次元に関する情報がほとんどで見つかりませんでした。
[ □ Tree ] 返信 編集キー/

▲[ 89836 ] / 返信無し
■89838 / 1階層)  Re[1]: Vector2次元配列の取り扱い
□投稿者/ 774RR (654回)-(2019/01/07(Mon) 18:42:59)
二次元配列というのが vector<vector<int> > v2; であるなら、
これは int a2[100][200]; とはメモリ上のデータ配置が全く異なっているわけだ。
どう異なっているか理解できていると、この v2 を「縮小」して省メモリするのは困難とわかるはず。

v2 自体を縮小することはほとんど意味がなくて
v2[0] v2[1] v2[2] ... v2[n] をすでに提示の方法で個別に縮小すればいいんだ。
でも縮小しても再利用困難な「小さな未使用領域」が増えるだけで、あまり美味しくない可能性が高いっす。

この v2 自体および v2[n] が具体的にどのようにメモリ上に確保されるか図を書いてみるといいっす。
これを文字だけの掲示板向けに AsciiArt で書くのは面倒すぎる・・・

[ 親 89836 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -