大きな正方形配列を作成したいが、次元の制限は1023です。したがって、in a commentのように、1D配列のVec
を作成します。 VMAX
の任意の値の罰金です大きな2D行列の作成方法
fn main() {
const VMAX: usize = 1000;
const ALEN: usize = 32;
let mut arr2: Vec<[f64; ALEN]> = vec![[0.0; ALEN]; VMAX];}
が、32より大きいALEN
が与える:
error[E0277]: the trait bound `[f64; 33]: std::clone::Clone` is not satisfied
--> <std macros>:2:1
|
2 | $ crate :: vec :: from_elem ($ elem , $ n)) ; ($ ($ x : expr) , *) => (
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
tes3.rs:4:35: 4:58 note: in this expansion of vec! (defined in <std macros>)
|
= help: the following implementations were found:
= help: <[T; 0] as std::clone::Clone>
= help: <[T; 1] as std::clone::Clone>
= help: <[T; 2] as std::clone::Clone>
= help: <[T; 3] as std::clone::Clone>
= help: and 29 others
= note: required by `std::vec::from_elem`
何かが間違って起こっていると私は問題は情報の検索と解釈している私は、スタートとしてこれを試してみましたエラーメッセージ。私の巨大な正方形の行列を作るにはどうすればいいですか?別のアプローチも良いでしょう。パフォーマンスは重要です。もちろん、私はインデックスをループし、その中にいくつかの値を入れるなど、配列を使って何かを行います。
※寸法限界は1023です - いいえ、ありません。それはあなたのコンピュータが持っているすべてのものなので、「メモリの限界」は4GBだと言っているようです。はい、スタックスペースは限られていますが、通常はある範囲内で変更できます。さらに、配列内の項目が1 MBを取る場合は、配列内に1023を配置する可能性は低く、項目が1バイトの場合は、おそらく1023以上を配置できます。 – Shepmaster
重複したhttp:// stackoverflow。 com/q/25151890/155423またはhttp://stackoverflow.com/q/13102786/155423またはhttp://stackoverflow.com/q/28145732/155423またはhttp://stackoverflow.com/q/39240360/155423を参照してください。 **質問をする前に検索をして、回答者の時間を尊重してください**。発生しているエラーは、おそらくhttp://stackoverflow.com/q/30415354/155423で説明されています。 – Shepmaster
さらに、数値計算と科学計算を扱う[いくつかの木枠](https://crates.io/)があります。これらの木箱の作者は、すでにこれらの決定に十分な考えを持っています。私が知っているものは[ndarray](https://github.com/bluss/rust-ndarray)です。 – Shepmaster