Learn Rust Coding · บทเรียน

สร้างและเติมเวกเตอร์

สร้าง Vec และเพิ่มรายการ

บทเรียน 1 จาก 413 ขั้นตอน

สร้างและเติมเวกเตอร์ เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. สร้างและเติมเวกเตอร์
  2. การใช้ดัชนีและการวนซ้ำ
  3. การขยายและลดขนาด
  4. เวกเตอร์ของ struct
← กลับไปที่ Learn Rust Coding