Tạo vector
Thuộc phần Logic và luồng chương trình trong hành trình Rust của Coddy. Bài học 8 trên 66.
Bây giờ bạn đã hiểu vector là gì, hãy cùng tìm hiểu cách tạo chúng. Rust cung cấp hai cách chính để tạo vector, mỗi cách phù hợp với những tình huống khác nhau.
Phương thức đầu tiên dùng Vec::new() để tạo một vector rỗng mà bạn có thể thêm phần tử vào sau:
let mut numbers = Vec::new();Lưu ý rằng chúng ta dùng mut vì sau này có thể bạn sẽ muốn thêm phần tử vào vector trống này. Rust không phải lúc nào cũng xác định được kiểu dữ liệu của một vector trống, nên bạn có thể cần chỉ định kiểu dữ liệu một cách rõ ràng:
let mut numbers: Vec<i32> = Vec::new();Phương thức thứ hai dùng macro vec![] để tạo một vector có các giá trị ban đầu:
let numbers = vec![1, 2, 3, 4, 5];Macro vec![] tiện lợi hơn khi bạn biết các giá trị ban đầu. Rust có thể tự động xác định kiểu dữ liệu từ các giá trị bạn cung cấp, nên không cần chú thích kiểu. Mảng này chứa năm số nguyên và có thể dùng ngay.
Macro vec![] cũng hỗ trợ cú pháp lặp lại để tạo một vector chứa cùng một giá trị. Dùng vec![value; n] để tạo một vector có n phần tử, mỗi phần tử được đặt thành value:
let zeros = vec![0; 5]; // [0, 0, 0, 0, 0]
let tens = vec![10; 3]; // [10, 10, 10]Điều này đặc biệt hữu ích khi bạn muốn tạo một vector có kích thước cụ thể được xác định khi chạy, chẳng hạn như dựa trên đầu vào của người dùng:
let n = 4;
let data = vec![10; n]; // [10, 10, 10, 10]Cả hai cách đều tạo ra cùng một kiểu vector, lựa chọn tùy thuộc vào việc bạn có giá trị ban đầu hay định tạo vector dần dần.
Thử thách
DễBạn sẽ nhận một số làm đầu vào, biểu thị số phần tử mà vectơ cần có. Hãy đọc đầu vào, chuyển đổi thành số nguyên và tạo một vectơ có số phần tử tương ứng, trong đó mỗi phần tử đều có giá trị là số 10.
Yêu cầu:
- Đọc đầu vào và chuyển đổi thành số nguyên
- Tạo một vectơ bằng macro
vec![] - Vectơ cần chứa số phần tử đã chỉ định
- Mỗi phần tử cần có giá trị
10 - In từng phần tử trên một dòng riêng
Đầu vào: Một số nguyên biểu thị số phần tử
Đầu ra: In từng phần tử của vectơ trên một dòng riêng
Tự làm thử
use std::io;
fn main() {
// Đọc đầu vào
let mut input = String::new();
io::stdin().read_line(&mut input).expect("Failed to read line");
let n: usize = input.trim().parse().expect("Invalid input");
// TODO: Viết code của bạn bên dưới
// Tạo một vector gồm n phần tử, mỗi phần tử có giá trị 10
// In mỗi phần tử trên một dòng riêng
}Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Logic và luồng chương trình
1Luồng điều khiển nâng cao
Biểu thức 'match'Khớp nhiều giá trịKhớp các phạm viBiểu thức 'if let'Vòng lặp dưới dạng biểu thứcÔn tập: Trình phân tích cú pháp lệnh đơn giản4Nhóm dữ liệu bằng Struct
Struct là gì?Tổng quan về StructTruy cập các trường của StructStruct có thể thay đổiStruct làm tham số cho hàmStruct dạng tupleÔn tập: Tạo Struct Book2Giới thiệu về vector
Vector là gì?Tạo vectorThêm phần tử bằng pushTruy cập phần tử trong vectorLặp qua vectorLặp có thể thay đổiXóa phần tửÔn tập: Bộ theo dõi điểm số cơ bản5Cặp khóa-giá trị với bảng băm
Bảng băm là gì?Tạo bảng bămThêm cặp khóa-giá trịTruy cập giá trịDuyệt qua bảng bămCập nhật giá trịXóa một cặpÔn tập: Bộ đếm từ8Dự án: Quản lý kho hàng đơn giản
Thiết lập dự ánThêm mặt hàngKiểm tra hàng tồn khoBán mặt hàngKết hợp tất cả11Thử thách cuối cùng
Ôn tập: Các mục duy nhấtÔn tập: Trình xác thực hồ sơ người dùngÔn tập: Tổng hợp điểm3Danh sách việc cần làm trên dòng lệnh
Thiết lập dự ánThêm một việcXem tất cả việcXóa một việcCode hoàn chỉnh6Xử lý giá trị vắng mặt với 'Option'
'Option' là gì?Dùng 'match' với 'Option'is_some() và is_none()Lấy giá trị từ 'Option'expectCung cấp giá trị mặc định: unwrap_orÔn tập: tìm một phần tử9Lát cắt chuỗi và hơn thế nữa
String và &strTạo lát cắt chuỗiLát cắt làm tham số hàmCác lát cắt khácÔn tập: Tìm từ đầu tiênTự luyện tập: Trình biên dịch Rust online