- 453 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 07:18:12.21 ID:U1znDmKO.net]
- 多次元配列の添字を入れ替える関数を実装したいのですが、任意の次元に対応するものをどう作れば良いのかわかりません。
たとえば v[a][b][c] を v[c][b][a] と入れ替えるのを全ての a, b, c について行ないたいです。 次元が 3 と決まっていれば、整数 a, b, c についてループを回して v_[c][b][a] = v[a][b][c] のようにコピーすれば良いのですが、次元が任意だと鉤括弧 [][][] を用いた要素アクセスをどうすれば良いのか分かりません。 不可能ですかね? その場合、多次元配列を 1 次元で持つことにして、各次元の長さを la, lb, lc,... として、整数 x を 0 から la*lb*lc... -1 まで回して、その都度 x の各桁を取り出して要素をコピーする、みたいなことしかやりようがないですか? そうなると各桁を取り出すのに割り算とか剰余演算を駆使しないと駄目なのでパフォーマンスが落ちるのが懸念です。 あるいは、3 次元に対応した関数、4 次元に対応した関数、…… といった感じで各次元に特殊化した関数を実装するべきでしょうか? できれば一般的というか汎用の関数を作りたいのですが。。。
|

|