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)
อิเทอเรเตอร์ใช้สำหรับวนลูปผ่านองค์ประกอบของคอลเลกชันอ็อบเจ็กต์ คอลเลกชันเหล่านี้อาจเป็นคอนเทนเนอร์หรือส่วนย่อยของคอนเทนเนอร์