В настоящее время я работаю над простым проектом, чтобы познакомиться с Rust. У меня мало опыта в системном программировании, но я надеюсь учиться!Создание структуры с массивом (Matrices)
Я пытаюсь создать структуру Матрицы, но мне трудно понять, как я должен хранить данные. Я чувствую, что могу использовать массив. Размер матрицы должен быть определен при построении, поэтому я надеюсь, что смогу сохранить массив в стеке.
Прямо сейчас мой код выглядит следующим образом:
use std::ops::Mul;
use std::ops::Add;
use std::ops::Div;
struct Matrix {
cols: i32,
rows: i32,
// Of course this doesn't work!
data: [f32; ..cols*rows]
}
// Below here are a bunch of stub methods.
impl Mul<f32> for Matrix {
type Output = Matrix;
fn mul(self, m: f32) -> Matrix {
return self;
}
}
impl Mul<Matrix> for Matrix {
type Output = Matrix;
fn mul(self, m: Matrix) -> Matrix {
// Will use Strassen algorithm if large, traditional otherwise
return self;
}
}
impl Add<Matrix> for Matrix {
type Output = Matrix;
fn add(self, m: Matrix) -> Matrix {
return self;
}
}
impl Div<f32> for Matrix {
type Output = Matrix;
fn div(self, f: f32) -> Matrix {
return self;
}
}
Спасибо за ответ - это помогло мне понять, что происходит дальше. Динамический размер выглядит правдоподобным, но я согласен, что это хлопот, и я не уверен, что он позволит мне делать такие вещи, как сделать матрицу по умолчанию всеми нулями (без подачи массива в конструктор). Я хотел бы иметь данные в стеке, но сейчас я попробую реализовать, используя вложенные в квадрат кусочки. Благодаря! – user124784
Я проверил код для nalgebra. Проблема заключается в том, что я планирую использовать это в настройке машинного обучения - так что матрицы огромных размеров будут распространены. D: – user124784
@ user124784 Наверное, лучше всего использовать кучу, так как хранить огромные вещи в стеке, как правило, плохая идея. – Adrian