Я хотел бы изменить вектор P * 1 элементов в матрице MN элементов, где P = MN. Используя числа, у меня есть вектор 143360, и я хотел бы преобразовать его в матрицу из 224 * 640 элементов самым простым способом. Я действительно новичок в C ++.
Спасибо
Напишите класс, обертывающий вектор.
Некоторые указатели:
(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.Чтобы ответить на ваш вопрос: если размер вашей матрицы не является фиксированным, вы можете использовать std::vector
хранить данные. Если это исправлено, вы можете использовать std::array
,
Тогда вы можете написать геттер как
double get_component(std::size_t c1, std::size_t c2){
return matrix [ c1 * M + c2 ];
}
НО: Я рекомендую взглянуть на библиотеки линейной алгебры, такие как собственный или же Amadrillo. Они обеспечивают удобство использования, к которому вы стремитесь, и предлагают высокоразвитые возможности хранения и расчета. Я сомневаюсь, что вы можете запустить производительность этих библиотек.