@JustSokol
newby programmer

Какой наиболее удобный (автоматизированный, простой) способ работы с двумерными динамическими массивами (матрицами) в С++?

Допустим нужно активно работать с математическими матрицами, или просто с двумерными массивами n*m (n и m не изменяются в течении жизни матрицы, то есть не надо ресайзить).

Задача тривиальная и использовать простейшие С/С++ "массив массивов", "массив указателей на массивы", где выделение, обнуление, удаление через вложенные циклы - делать не хочется.
Наверняка как-то это уже реализованно/упрощено с помощью стл или буст или чего-то еще.

Беглый гугл выдает статьи для студентов по основам С++ где как раз такими элементарными вещами занимаются.

Знающие люди, пожалуйста подскажите как нынче в С++ это наиболее просто реализовать.

Тоесть нужно упростить обслуживание жизненого цикла двумерного массива произвольных размеров (выделение, обнуление, удаление из памяти). что-то типа чтобы можно было сказать вот эта переменная - двумерный массив, доступ к значениями по скобкам [][] либо через метод класса get/set_Value(index n,index m) (мне подойдет любой), желательно чтобы встрено обнуление или заполнение каким-то значением, и с удалением также - удалить память выделенную под эту переменную (чтобы не заморачиваться самому пробегом по массиву указателей).
Еще желательно чтобы был какойто доступ до размеров n*m, чтобы они хранились как-то вместе с этой переменной или какая-то функция/метод могли их выцепить (чтобы вручную не таскать размеры матрицы, например в функцию).
  • Вопрос задан
  • 239 просмотров
Решения вопроса 2
@Alexander1705
Наверняка как-то это уже реализованно/упрощено с помощью стл или буст или чего-то еще.

Так почему же не проверить, перед тем, как задавать вопрос? Вот, первая ссылка - то, что вам нужно.
Ответ написан
Комментировать
@D3Nd3R
Есть решение из замечательной библиотеки dlib dlib.net/linear_algebra.html
Заголовочный файл #include < dlib/matrix.h >, на сайте есть много примеров.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@whiteBlackness
В STL есть специально оптимизированные контейнеры для численных вычислений
www.cplusplus.com/reference/valarray

Вот пример
alexkutsan.blogspot.ru/2012/10/stdvalarray-stdslic...
Ответ написан
Комментировать
Adamos
@Adamos
class MyMatrix {
public:
  MyMatrix(size_t width, size_t height);
  ~MyMatrix();
  size_t getWidth();
  size_t getHeght();
  MyType get(size_t x, size_t y);
  void set(size_t x, size_t y, MyType value);
private:
  size_t _width, _height;
  MyType* _memory;
};

Если вы знаете С++, то написать реализацию у вас займет что-то в районе получаса...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы