sách gpt4 ai đã đi

rust - 为什么初始化向量的向量 (Vec<>>) 需要 T 而不是 Vec?

In lại 作者:行者123 更新时间:2023-11-29 08:22:00 26 4
mua khóa gpt4 Nike

我错过了向量向量初始化的一些东西。在第一种方法中,我尝试了这段代码:

let mut landFirst: Vec<>> = Vec::with_capacity(width);
for v in landFirst {
v.push(Vec::with_capacity(height));
}

但是失败了:

v.push(Vec::with_capacity(height));
^^^^^^^^^^^^^^^^^^^^^^^^^ expected char, found struct `std::vec::Vec`

Tại sao? vPhụ thuộc vào Vec 组成, 不属于 char .

它适用于此代码:

let mut landFirst: Vec<>> = Vec::with_capacity(width);
for cpt in 0..width {
landFirst.insert(cpt, Vec::with_capacity(height));
}

能请教一下吗?

1 Câu trả lời

Why? v is composed of Vec, not of char.

让我们检查一下 v 的类型:

for v in land_first {
let () = v;
}

这导致:

error[E0308]: mismatched types
--> src/main.rs:7:13
|
7 | let () = v;
| ^^ expected struct `std::vec::Vec`, found ()
|
= note: expected type `std::vec::Vec`
found type `()`

Vì thế v类型为 Vec .为什么?很好用for v in land_first您遍历 land_first 的所有元素. land_first的元素是什么?正确:Vec .

你混淆的另一件事:Vec::with_capacity()只保留内存,但实际上并不插入元素。 Vec::with_capacity(10).len()是0!您需要使用 push()hoặc insert()实际插入元素。

这也暗示了您方法的核心问题:您认为向量中的字符是什么?您从未指定要插入的字符。没有明确的默认值总是有用的,对吧?


那么理想情况下,您将如何初始化向量的向量?有有用的vec![]宏观:

const INIT_CHAR: char = '❤';
let land_first = vec![vec![INIT_CHAR; height]; width];

另请注意:

  • 我改变了landFirstĐẾN land_first .在 Rust 中,变量名使用 snake_case .
  • 我删除了显式类型注释:这些在 Rust 中通常不是必需的。

关于rust - 为什么初始化向量的向量 (Vec<>>) 需要 T 而不是 Vec?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51685640/

26 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com