Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ไลบรารี C++ STL (Standard Template Library)


C++ STL (Standard Template Library) เป็นชุดคลาสเทมเพลตของ C++ ที่ทรงพลังซึ่งให้คลาสและฟังก์ชันสำหรับวัตถุประสงค์ทั่วไปด้วยเทมเพลตที่นำอัลกอริทึมและโครงสร้างข้อมูลยอดนิยมหลายอย่างมาใช้งาน เช่น เวกเตอร์ (vectors), ลิสต์ (lists), คิว (queues) และสแต็ก (stacks)

STL เป็นไลบรารีของคลาสคอนเทนเนอร์ (containers), อัลกอริทึม (algorithms) และอิเทอเรเตอร์ (iterators) เป็นไลบรารีแบบเจเนอริก (generalized) ดังนั้นองค์ประกอบต่างๆ จึงเป็นแบบพารามิเตอร์ การทำงานกับคลาสเทมเพลตเป็นข้อกำหนดเบื้องต้นสำหรับการใช้งาน STL

เทมเพลตเป็นคุณสมบัติของภาษา C++ ที่อนุญาตให้ฟังก์ชันและคลาสทำงานกับชนิดข้อมูลทั่วไป (generic types) ซึ่งช่วยให้ฟังก์ชันหรือคลาสเดียวทำงานกับหลายชนิดข้อมูลได้โดยไม่ต้องเขียนใหม่สำหรับแต่ละชนิด

C++ Standard Template Library มีองค์ประกอบหลัก 3 ส่วนที่มีโครงสร้างชัดเจน ดังนี้

1. คอนเทนเนอร์ (Containers)

คอนเทนเนอร์ใช้จัดการคอลเลกชันของอ็อบเจ็กต์ประเภทหนึ่งๆ มีหลายประเภท เช่น deque, list, vector, map ฯลฯ

  • Sequence Containers (คอนเทนเนอร์ลำดับ) - คอนเทนเนอร์เหล่านี้นำโครงสร้างข้อมูลที่เข้าถึงได้แบบลำดับมาใช้งาน

    • vector
    • list
    • deque
    • arrays
    • forward_list
  • Container Adaptors (คอนเทนเนอร์แอดอัปเตอร์) - ให้อินเทอร์เฟซที่แตกต่างสำหรับคอนเทนเนอร์ลำดับ

    • queue
    • priority_queue
    • stack
  • Associative Containers (คอนเทนเนอร์เชิงสัมพันธ์) - นำโครงสร้างข้อมูลที่เรียงลำดับแล้วมาใช้งาน สามารถค้นหาได้เร็ว (ความซับซ้อน O(log n))

    • set
    • multiset
    • map
    • multimap
  • Unordered Associative Containers (คอนเทนเนอร์เชิงสัมพันธ์แบบไม่เรียงลำดับ) - นำโครงสร้างข้อมูลที่ไม่ได้เรียงลำดับมาใช้งาน สามารถค้นหาได้เร็ว

    • unordered_set
    • unordered_multiset
    • unordered_map
    • unordered_multimap

2. อัลกอริทึม (Algorithms)

อัลกอริทึมทำงานบนคอนเทนเนอร์ ให้วิธีการในการเริ่มต้น, เรียงลำดับ, ค้นหา และแปลงเนื้อหาของคอนเทนเนอร์

หมวดหมู่อัลกอริทึม

  • Sorting (การเรียงลำดับ)
  • Searching (การค้นหา)
  • Important STL Algorithms (อัลกอริทึมสำคัญของ STL)
  • Useful Array algorithms (อัลกอริทึมอาร์เรย์ที่มีประโยชน์)
  • Partition Operations (การดำเนินการแบ่งพาร์ติชัน)

3. อิเทอเรเตอร์ (Iterators)

อิเทอเรเตอร์ใช้สำหรับวนลูปผ่านองค์ประกอบของคอลเลกชันอ็อบเจ็กต์ คอลเลกชันเหล่านี้อาจเป็นคอนเทนเนอร์หรือส่วนย่อยของคอนเทนเนอร์