C ++: лучшая структура для реализации классов Vector и Matrix - PullRequest
1 голос
/ 20 июня 2020

Я хочу реализовать классы Vector и Matrix в C ++, чтобы можно было умножать объекты Vector и Matrix. Есть следующие 2 структуры, которые я мог бы придумать для их реализации:

  1. Реализуйте класс шаблона Vector с типом данных T*, а затем определите класс шаблона Matrix как массив Vector s.

  2. Реализуйте класс шаблона Matrix с типом данных T**, а затем наследуйте класс шаблона Vector как Matrix с (количество столбцов = 1).

Недостаток первого подхода состоит в том, что класс Vector не заботится о векторах столбцов и строк, и умножение вектор-вектор будет быть проблематичным c, и во втором подходе Vector будет рассматриваться как 2D-матрица с (количество столбцов = 1) или T**.

Каким будет лучший способ реализовать эти 2 класса? Спасибо.

1 Ответ

2 голосов
/ 20 июня 2020

Я бы не рекомендовал делать много вещей с необработанными указателями, позже это может стать действительно беспорядочным и отлаживать это кошмар. Я бы использовал generi c vector

template<typename T>
std::vector<T>

, чтобы при необходимости можно было использовать разные типы. Но если вы имеете дело только с числами, я бы не стал переоценивать его.

Для умножения вы можете использовать перегрузку оператора. Вы можете посмотреть на ту же уже существующую реализацию и посмотреть, есть ли что-то, что соответствует вашим потребностям. Быстрое исследование в Google дало мне следующее:

CodeProject

Если вы найдете что-то еще, не стесняйтесь добавить это к своему вопросу, чтобы никому не пришлось изобретать велосипед.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...