Learn Rust Coding · บทเรียน

การขยายและลดขนาด

แทรก ลบ และปรับขนาด

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

การขยายและลดขนาด เป็นบทเรียน Learn Rust Coding ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn Rust Coding และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn Rust Coding มีบทเรียนทั้งหมด 4 บทเรียน

Vector เปลี่ยนขนาดได้

คุณสมบัติสำคัญของเวกเตอร์คือสามารถเปลี่ยนขนาดขณะโปรแกรมทำงานได้ คุณสามารถเพิ่มสมาชิกเมื่อมีข้อมูลมากขึ้น และลบสมาชิกเมื่อไม่ต้องการใช้แล้ว

การเปลี่ยนขนาดทุกครั้งจำเป็นต้องประกาศเวกเตอร์เป็น mut

การขยายด้วย push

เมธอด push เพิ่มสมาชิกหนึ่งตัวที่ท้ายเวกเตอร์ ทำให้เวกเตอร์ยาวขึ้นหนึ่งรายการ นี่เป็นวิธีขยายเวกเตอร์ที่ใช้บ่อยที่สุด

ด้านล่าง เวกเตอร์จะขยายจากความยาว 0 เป็นความยาว 3

fn main() {
    let mut v = Vec::new();
    v.push("a");
    v.push("b");
    v.push("c");
    println!("len = {}", v.len());
}

การนำออกด้วย pop

เมธอด pop จะนำสมาชิกตัวสุดท้ายออกและคืนค่าสมาชิกนั้นในรูปแบบ Option โดยปกติคุณจะได้ Some(value) แต่ถ้าเวกเตอร์ว่างอยู่แล้วจะได้ None

การทำเช่นนี้จะลดความยาวของเวกเตอร์ลงหนึ่ง

fn main() {
    let mut v = vec![1, 2, 3];
    let last = v.pop();
    println!("popped {:?}", last);
    println!("now {:?}", v);
}

การแทรกตรงกลาง

เมธอด insert วางค่าไว้ที่ดัชนีที่กำหนด แล้วเลื่อนสมาชิกถัดไปไปทางขวา ดัชนีต้องอยู่ตั้งแต่ 0 จนถึงความยาวปัจจุบัน

ในที่นี้เราแทรก 99 ไว้ที่ตำแหน่ง 1

fn main() {
    let mut v = vec![10, 20, 30];
    v.insert(1, 99);
    println!("{:?}", v);
}

การลบตามดัชนี

เมธอด remove ลบสมาชิกที่ดัชนีหนึ่ง ๆ คืนค่าสมาชิกนั้น และเลื่อนสมาชิกถัดไปไปทางซ้ายเพื่อเติมช่องว่าง

โปรดระวัง: การลบดัชนีที่ไม่มีอยู่จะทำให้โปรแกรมตื่นตระหนก

fn main() {
    let mut v = vec![10, 20, 30];
    let gone = v.remove(0);
    println!("removed {}", gone);
    println!("{:?}", v);
}

การลบอย่างรวดเร็วด้วย swap_remove

เมื่อไม่จำเป็นต้องรักษาลำดับ swap_remove จะทำงานได้เร็วกว่า โดยย้ายสมาชิกตัวสุดท้ายมาแทนที่ตำแหน่งที่ลบ แทนการเลื่อนสมาชิกทั้งหมด

วิธีนี้จะเปลี่ยนลำดับสมาชิก แต่หลีกเลี่ยงค่าใช้จ่ายจากการเลื่อน

fn main() {
    let mut v = vec![1, 2, 3, 4];
    let x = v.swap_remove(0);
    println!("took {}", x);
    println!("{:?}", v);
}

การลบทั้งหมด

เมธอด clear ลบสมาชิกทั้งหมดในครั้งเดียว เหลือเวกเตอร์ว่างที่มีความยาว 0 เวกเตอร์จะยังคงความจุที่จัดสรรไว้เพื่อใช้ซ้ำ

วิธีนี้มีประโยชน์เมื่อคุณต้องการเติมเวกเตอร์ใหม่ตั้งแต่ต้น

fn main() {
    let mut v = vec![1, 2, 3];
    v.clear();
    println!("empty? {}", v.is_empty());
}

การตัดให้เหลือความยาวที่กำหนด

เมธอด truncate ทำให้เวกเตอร์สั้นลงจนมีความยาวที่เลือก โดยทิ้งสมาชิกส่วนเกินท้ายเวกเตอร์ หากเวกเตอร์สั้นกว่านั้นอยู่แล้ว จะไม่มีอะไรเกิดขึ้น

ในที่นี้เราเก็บไว้เพียงสองสมาชิกแรก

fn main() {
    let mut v = vec![1, 2, 3, 4, 5];
    v.truncate(2);
    println!("{:?}", v);
}

การรวมด้วย extend

เมธอด extend เติมสมาชิกทุกตัวจากคอลเลกชันอื่นต่อท้าย เปรียบเสมือนการเรียก push กับสมาชิกแต่ละตัวในขั้นตอนเดียว

ด้านล่างนี้ เราเพิ่มรายการที่สองต่อท้ายรายการแรก

fn main() {
    let mut v = vec![1, 2];
    v.extend(vec![3, 4, 5]);
    println!("{:?}", v);
}

การเก็บไว้เพียงบางส่วนด้วย retain

เมธอด retain จะเก็บเฉพาะสมาชิกที่ผ่านการทดสอบ และลบสมาชิกที่เหลือออกจากเวกเตอร์เดิม คุณต้องส่งคลอเชอร์ที่คืนค่าบูลีนให้เมธอดนี้

ในที่นี้เราเก็บไว้เฉพาะจำนวนคู่

fn main() {
    let mut v = vec![1, 2, 3, 4, 5, 6];
    v.retain(|n| n % 2 == 0);
    println!("{:?}", v);
}

การเรียงลำดับสมาชิก

เมธอด sort เรียงสมาชิกจากน้อยไปมากภายในเวกเตอร์เดิม โดยไม่เปลี่ยนความยาว มีเพียงการจัดเรียงที่เปลี่ยนไป

การเรียงลำดับต้องใช้เวกเตอร์ที่เป็น mut

fn main() {
    let mut v = vec![3, 1, 4, 1, 5];
    v.sort();
    println!("{:?}", v);
}

ตรวจสอบความเข้าใจ

ทดสอบความเข้าใจของคุณเกี่ยวกับการเพิ่มและลดขนาดเวกเตอร์

สรุปทบทวน

คุณเพิ่มขนาดเวกเตอร์ด้วย push, insert และ extend และลดขนาดด้วย pop, remove, swap_remove, clear และ truncate

คุณยังกรองสมาชิกด้วย retain และจัดลำดับด้วย sort ต่อไปคุณจะเรียนรู้การเก็บโครงสร้างข้อมูลไว้ภายในเวกเตอร์

เริ่มต้นได้ฟรี

เรียนรู้ Rust ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
39
บทเรียน
144

คำถามที่พบบ่อย

บทเรียน “การขยายและลดขนาด” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การขยายและลดขนาด” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn Rust Coding ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn Rust Coding มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การขยายและลดขนาด”

แทรก ลบ และปรับขนาด คุณปฏิบัติ Learn Rust Coding ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn Rust Coding หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn Rust Coding บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “การขยายและลดขนาด” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Learn Rust Coding นี้ได้ไหม

ได้ บทเรียน Learn Rust Coding ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

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