матрица — Как изменить вектор в C ++?

Я хотел бы изменить вектор P * 1 элементов в матрице MN элементов, где P = MN. Используя числа, у меня есть вектор 143360, и я хотел бы преобразовать его в матрицу из 224 * 640 элементов самым простым способом. Я действительно новичок в C ++.

Спасибо

-5

Решение

Напишите класс, обертывающий вектор.

Некоторые указатели:

  • Вектор (или ссылка на него) должен быть членом
  • Вы сохраняете количество строк и столбцов
  • Вы получаете доступ к элементу (j,i)например, возвращая элемент j*columns+i вектора
  • Функции доступа могут иметь одно и то же имя, например const T& operator()(std::size_t j, std::size_t i) const для добытчика и Т& operator () (std :: size_t j, std :: size_t i) `для функции, которую вы используете для установки определенных элементов. Преимущество обоих заключается в том, что вы можете использовать геттер при передаче вашей матрицы как const.
  • Как уже упоминалось, вы можете создать шаблон для своего класса, чтобы вы могли использовать его с несколькими типами данных.
0

Другие решения

Чтобы ответить на ваш вопрос: если размер вашей матрицы не является фиксированным, вы можете использовать std::vector хранить данные. Если это исправлено, вы можете использовать std::array,

Тогда вы можете написать геттер как

double get_component(std::size_t c1, std::size_t c2){
return matrix [ c1 * M + c2 ];
}

НО: Я рекомендую взглянуть на библиотеки линейной алгебры, такие как собственный или же Amadrillo. Они обеспечивают удобство использования, к которому вы стремитесь, и предлагают высокоразвитые возможности хранения и расчета. Я сомневаюсь, что вы можете запустить производительность этих библиотек.

0

По вопросам рекламы [email protected]