Re: 2次元配列の動的確保
忘れた頃にやねのすずめ。(^^ゞ
# いまさらながら思いついたので、自己フォローです
TAKE1 さんの <9k6i96$r69$1@news.stnet.ad.jp> より...
>1行1列、2行2列、、、、n行n列
>というように動的に行列を増やす。
>
>配列は別確保しない。(本当に1つの配列をふやしていく)
>
>配列に入れた内容は、初期化しない。
>
>例
>r[1][1],r[2][2].....r[n][n]
>
>ということをしたいのですが、
添字を付け直し、1次元配列として扱って
C言語の realloc() 関数(メモリ割り当てサイズの変更)を使うのは
同じですが、
x, y を2進法で表して
... x2 x1 x0, ... y2 y1 y0
となるとき、
i = ... y2 x2 y1 x1 y0 x0
を新しい添字とすれば良いですね。
つまり、下図のように番号をつけるわけです:
0 1 4 5 ...
2 3 6 7 ...
8 9 12 13 ...
10 11 14 15 ...
: : : :
この方法は、3次元以上でも応用できます。
また、3進法でも10進法でもできます。
そのかわり、配列のサイズが 4 (=2^2) のべき乗になったりします。
# 半導体メモリ的
処理はシフト演算の繰返しでしょう。
# ハードウェア化すると速いかも(線の入れ換えですむので)
--
(^v^) (.. )(o^< >^o)
(( ))//^ ))(( ))(( ))
= //林 //林 //林 //林 ================================^
http://www5a.biglobe.ne.jp/~espoir/ やねのすずめ // \
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735