Я сделал это некоторое время назад для необработанных изображений, объявив свои собственные 2-мерные классы массивов.
В обычном 2D-массиве вы получаете доступ к таким элементам, как:
Массив [2] [3]. Теперь, чтобы получить этот эффект, у вас будет массив классов с перегруженным
[] Массив доступа. Но это по существу вернет другой массив, тем самым давая
Вы второе измерение.
Проблема с этим подходом состоит в том, что он имеет двойную служебную нагрузку при вызове функции.
То, как я это сделал, было использовать перегрузку стиля ().
Так что вместо
массив [2] [3], изменить, я сделал это сделать этот массив стилей (2,3).
Эта функция () была очень маленькой, и я позаботился о том, чтобы она была встроенной.
См. Эту ссылку для общей концепции этого:
http://www.learncpp.com/cpp-tutorial/99-overloading-the-parenthesis-operator/
При необходимости вы можете создать шаблон типа.
Разница у меня была в том, что мой массив был динамическим. У меня был блок памяти чар, который я бы объявил. И я использовал кеш столбцов, поэтому я знал, где в моей последовательности байтов начинается следующий ряд. Доступ был оптимизирован для доступа к соседним значениям, потому что я использовал его для обработки изображений.
Трудно объяснить без кода, но по сути результат был таким же быстрым, как C, и намного проще для понимания и использования.