สร้างและเติมเวกเตอร์
สร้าง Vec และเพิ่มรายการ
สร้างและเติมเวกเตอร์ เป็นบทเรียน Learn Rust Coding ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn Rust Coding และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn Rust Coding มีบทเรียนทั้งหมด 4 บทเรียน
Vector คืออะไร
เวกเตอร์คือรายการค่าที่ปรับขนาดได้ โดยค่าทั้งหมดต้องเป็นชนิดเดียวกัน ต่างจากอาร์เรย์ขนาดตายตัว เวกเตอร์สามารถลดหรือเพิ่มขนาดได้ขณะโปรแกรมทำงาน
ใน Rust จะเขียนชนิดข้อมูลเป็น Vec<T> โดย T คือชนิดของสมาชิกที่เก็บ เช่น Vec<i32> สำหรับจำนวนเต็ม
Vector ว่าง
คุณสร้างเวกเตอร์ว่างใหม่ได้ด้วย Vec::new() เนื่องจากยังไม่มีค่า Rust จึงไม่สามารถเดาชนิดของสมาชิกได้ ดังนั้นโดยทั่วไปคุณจึงต้องระบุชนิดกำกับไว้
ในที่นี้เราบอก Rust ว่าเวกเตอร์นี้จะเก็บจำนวนเต็ม i32
fn main() {
let v: Vec<i32> = Vec::new();
println!("len = {}", v.len());
}มาโคร vec!
วิธีที่รวดเร็วที่สุดในการสร้างเวกเตอร์พร้อมค่าเริ่มต้นคือมาโคร vec! ให้ใส่ค่าไว้ภายในวงเล็บเหลี่ยม
Rust จะดูค่าที่ระบุเพื่ออนุมานชนิดของสมาชิก ดังนั้นในที่นี้จึงไม่ต้องระบุชนิดกำกับ
fn main() {
let nums = vec![10, 20, 30];
println!("{:?}", nums);
}การพิมพ์ Vector
การพิมพ์เวกเตอร์ทั้งชุดต้องใช้ตัวจัดรูปแบบสำหรับตรวจสอบข้อผิดพลาด {:?} ไม่ใช่ {} แบบปกติ รูปแบบสำหรับตรวจสอบจะแสดงค่าภายในวงเล็บเหลี่ยม
ใช้ {:#?} หากต้องการรูปแบบหลายบรรทัดที่อ่านง่ายเมื่อเวกเตอร์มีขนาดใหญ่
fn main() {
let names = vec!["Ann", "Bo", "Cy"];
println!("{:?}", names);
}การเพิ่มค่าด้วย push
หากต้องการเพิ่มค่าที่ท้ายเวกเตอร์ ให้เรียกใช้ push เวกเตอร์ต้องประกาศเป็น mut เพราะการเพิ่มค่าจะเปลี่ยนแปลงเวกเตอร์
การเรียกใช้ push แต่ละครั้งจะเพิ่มสมาชิกหนึ่งรายการ ทำให้ความยาวเพิ่มขึ้นหนึ่ง
fn main() {
let mut v = Vec::new();
v.push(1);
v.push(2);
v.push(3);
println!("{:?}", v);
}ชนิดข้อมูลจาก push ครั้งแรก
เมื่อเริ่มด้วย Vec::new() โดยไม่ระบุชนิดกำกับ Rust จะรอให้เรียกใช้ push ครั้งแรกเพื่อเรียนรู้ชนิดของสมาชิก
ด้านล่าง การเพิ่มค่า 3.5 จะบอก Rust ว่านี่คือ Vec<f64> ค่าที่เพิ่มภายหลังทั้งหมดต้องเป็นชนิดเดียวกัน
fn main() {
let mut prices = Vec::new();
prices.push(3.5);
prices.push(9.0);
println!("{:?}", prices);
}การเติมค่าซ้ำ
มาโคร vec! สามารถทำซ้ำค่าได้ เขียน vec![value; count] เพื่อสร้างเวกเตอร์ที่มีค่านั้นซ้ำ count ครั้ง
วิธีนี้มีประโยชน์สำหรับเตรียมรายการเลขศูนย์หรือค่าเริ่มต้น
fn main() {
let zeros = vec![0; 5];
println!("{:?}", zeros);
}การเติมค่าด้วยลูป
คุณสามารถเติมค่าในเวกเตอร์โดยเรียกใช้ push ภายในลูป ในที่นี้เราเพิ่มกำลังสองของตัวเลขตั้งแต่ 1 ถึง 4
การเริ่มจากเวกเตอร์ว่างแล้วเพิ่มค่าไปเรื่อย ๆ เป็นรูปแบบที่ใช้กันทั่วไปเมื่อค่าต่าง ๆ ถูกคำนวณขึ้น
fn main() {
let mut squares = Vec::new();
for n in 1..=4 {
squares.push(n * n);
}
println!("{:?}", squares);
}ความจุเทียบกับความยาว
ความยาวคือจำนวนสมาชิกที่เวกเตอร์มีอยู่ในขณะนั้น ส่วนความจุคือพื้นที่ที่จองไว้ก่อนที่เวกเตอร์จะต้องขยายหน่วยความจำ
หากคุณพอทราบว่าจะเพิ่มสมาชิกประมาณกี่รายการ Vec::with_capacity(n) จะจองพื้นที่ไว้ล่วงหน้าและหลีกเลี่ยงการจัดสรรหน่วยความจำใหม่ซ้ำ ๆ
fn main() {
let mut v = Vec::with_capacity(10);
v.push(1);
println!("len {}, cap {}", v.len(), v.capacity());
}จาก Array
คุณสามารถแปลงอาร์เรย์เป็นเวกเตอร์ได้ วิธีง่าย ๆ คือใช้ .to_vec() ซึ่งจะคัดลอกสมาชิกของอาร์เรย์ไปยังเวกเตอร์ใหม่ที่เป็นเจ้าของข้อมูลเอง
วิธีนี้มีประโยชน์เมื่อเริ่มต้นด้วยข้อมูลขนาดตายตัว แต่ต้องการให้ข้อมูลขยายได้ภายหลัง
fn main() {
let arr = [1, 2, 3];
let v = arr.to_vec();
println!("{:?}", v);
}การตรวจสอบว่าว่างหรือไม่
ใช้ is_empty() เพื่อตรวจสอบว่าเวกเตอร์ไม่มีสมาชิกหรือไม่ เมธอดนี้คืนค่า bool ซึ่งชัดเจนกว่าการเปรียบเทียบความยาวกับศูนย์
นี่เป็นการตรวจสอบที่ดี ก่อนอ่านสมาชิกตัวแรก
fn main() {
let v: Vec<i32> = Vec::new();
if v.is_empty() {
println!("nothing here yet");
}
}ตรวจสอบความเข้าใจ
ทดสอบความเข้าใจเกี่ยวกับการสร้างและเติมค่าในเวกเตอร์
สรุปทบทวน
คุณได้เรียนรู้การสร้างเวกเตอร์ด้วย Vec::new() และมาโคร vec! รวมถึงการเติมค่าโดยใช้ push การทำซ้ำ ลูป และ to_vec()
คุณยังได้เห็นความแตกต่างระหว่างความยาวกับความจุ และวิธีตรวจสอบว่าเวกเตอร์ว่างหรือไม่ ต่อไปคุณจะเรียนรู้การอ่านค่าและวนลูปผ่านสมาชิกของเวกเตอร์
เรียนรู้ Rust ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 39
- บทเรียน
- 144
คำถามที่พบบ่อย
บทเรียน “สร้างและเติมเวกเตอร์” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “สร้างและเติมเวกเตอร์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn Rust Coding ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn Rust Coding มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “สร้างและเติมเวกเตอร์”
สร้าง Vec และเพิ่มรายการ คุณปฏิบัติ Learn Rust Coding ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn Rust Coding หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn Rust Coding บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “สร้างและเติมเวกเตอร์” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Learn Rust Coding นี้ได้ไหม
ได้ บทเรียน Learn Rust Coding ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- สร้างและเติมเวกเตอร์
- การใช้ดัชนีและการวนซ้ำ
- การขยายและลดขนาด
- เวกเตอร์ของ struct