c++ - Arbitrary dimensional array using Variadic templates -


how can create array class in c++11 can used

array < int, 2, 3, 4> a, b;  array < char, 3, 4> d;  array < short, 2> e; 

and access in way like

a[2][1][2] = 15;  d[1][2] ='a'; 

i need overload operator as

t &operator[size_t i_1][size_t i_2]...[size_t i_d];  

which not exist. how can this?

the simplest way nesting std::array:

#include<array>  template<class t, size_t size, size_t... sizes> struct arrayimpl {     using type = std::array<typename arrayimpl<t, sizes...>::type, size>; };  template<class t, size_t size> struct arrayimpl<t, size> {     using type = std::array<t, size>; };  template<class t, size_t... sizes> using array = typename arrayimpl<t, sizes...>::type; 

in solution array<char, 3, 4> same std::array<std::array<char, 4>, 3> - array consisting of arrays of smaller dimension.

this shows how can implement operator[] many dimensions. operator[] of object needs return object operator[] defined. in case reference array of smaller dimension.


Comments

Popular posts from this blog

android - MPAndroidChart - How to add Annotations or images to the chart -

javascript - Add class to another page attribute using URL id - Jquery -

firefox - Where is 'webgl.osmesalib' parameter? -