n-wymariowe tablice

1

Witam!

Jest jakiś sposób żeby utworzyć dynamicznie n-wymiarową tablice, np. pod parametr n ktoś podaje 3 i powstaje tablica tab[][][] ?

Znalazłem na jakimś forum post z 2009 na ten temat i ktoś dał taki pomysł, ale nie jestem pewien matematyki stojącej za tym rozwiązaniem i zastanawiam się czy może istnieje jakiś inny sposób do stworzenia n-wymiarowej tablicy:

"

This is a rather bizarre request. But it can be done.

You can create an n-dimensional array of dimensionsD1, D2, D3, ..., Dn by creating a one dimensional array of size (D1 * D2 * D3 * ... * Dn). Then you access an element at position```
(x1, x2, x3, ... ,xn)

array[x1 * (D2 * D3 * ... Dn) + x2 (D3 * D4 * ... Dn) + ... + xn].




====================
Example: Creating a 4-dimensional array of sizes

3,2,5,7 (i.e. array[3][2][5][7]).


Create an array of size ```
(3 * 2 * 5 * 7)
```. Say, you want to access an element at position ```
(2, 0, 4, 1)
```. The index of the array will be calculated as such:

2 * (2 * 5 * 7) + 0 * (5 * 7) + 4 * (7) + 1.


"
1

Zawsze możesz stworzyć tablicę jednowymiarową a indeks wyliczać ręcznie z użyciem dowolnej ilości wymiarów.

This is a rather bizarre request

No właśnie. Po co ci to? :-)

3

W tagach umieściłeś wszystko, poza językiem którego pytanie dotyczy, więc zakładam C++. Możesz użyć szablonu opakowującego mojego autorstwa: https://github.com/KrzaQ/cpp_stuff/blob/master/include/kq/matrix_view.hpp

https://dsp.krzaq.cc/post/448/n-wymiarowy-widok-na-macierz-w-cxx/

1 użytkowników online, w tym zalogowanych: 0, gości: 1