Try using Boost.MultiArray. It allows you to create multidimensional arrays with contents of arbitrary content type. I have used it (the boost::multi_array_ref part to be more specific) and it works pretty nice. An important feature is the ability to create array views (and slices based on views).
solved Passing map (matrix) to class C++ [closed]