I need a two dimensional array where the length of neither dimension is known at compile time. I want [][]
access.
There are several questions about this already, suggesting boost::multi_array
, std::vector<std::vector<type>>
, allocating one array for the x dimension and X arrays for the y dimension, so on and so forth.
The catch is that I do not control the data, it already exists as a single contiguous array (size x*y
). I have a pointer to it and the size of both dimensions, and I am more or less wrapping it to get [][]
access.
I would like to avoid creating a whole bunch of objects (like allocating an array of std::vector
s and pointing them all at the right things), and boost.
I considered creating a class to hold both dimensions and the pointer, and overloading [][]
, but that doesn't work because [][]
is two operators, and the second []
applies to a different object.
Ultimately I'm looking for something that amounts to using [][]
as syntactic sugar for some kind of access(int x, int y)
function. Is that possible?