ไลบรารีแม่แบบมาตรฐานของภาษาซีพลัสพลัส/map

จาก วิกิตำรา
ไลบรารีแม่แบบมาตรฐานของภาษาซีพลัสพลัส
map


map เป็นโครงสร้างข้อมูลแบบ w:Associative array ข้อมูลหนึ่ง ๆ จะประกอบไปด้วยสองส่วนคือ คีย์ และ ค่าข้อมูล ในการที่จะเข้าถึงค่าหนึ่ง ๆ สามารถกระทำได้ผ่านการระบุ key ดังนั้นจึงอาจมอง map เป็นแถวลำดับซึ่งไม่มีข้อจำกัดด้านพิสัยของดัชนีหรือชนิดข้อมูลของดัชนี

map ของไลบรารีแม่แบบมาตรฐานนี้อิมพลีเมนต์โดยใช้w:ต้นไม้แดงดำ ซึ่งจากการที่เก็บข้อมูลบนต้นไม้ค้นหาแบบทวิภาคจึงทำให้มีคุณสมบัติต่าง ๆ เพิ่มขึ้นมาจาก w:Associative array ปกติ เช่น คุณสมบัติในการหาค่าที่มากกว่าสมาชิกดังกล่าว ผ่านw:การค้นหาแบบทวิภาคบนต้นไม้ อย่างไรก็ตาม เนื่องจากการเก็บข้อมูลบนต้นไม้แดงดำต้องอาศัยการเปรียบเทียบของคีย์จึงจำเป็นที่จะต้องระบุฟังก์ชัน/คลาสสในการเปรียบเทียบให้ด้วย (หากไม่ระบุจะใช้ less เป็นคลาสเปรียบเทียบโดยอัตโนมัติ)

การใช้งานและประกาศตัวแปร[แก้ไข | แก้ไขต้นฉบับ]

ก่อนอื่นให้ทำการ #include <map>

สมมุติถ้าต้องการจะประกาศตัวแปร var โดยคีย์มีชนิดข้อมูลเป็น type1 และค่าข้อมูลมีชนิดข้อมูลเป็น type2 สามารถเขียนโค้ดได้ดังนี้: map <datatype1,datatype2> var;

method[แก้ไข | แก้ไขต้นฉบับ]

lower_bound[แก้ไข | แก้ไขต้นฉบับ]

คำอธิบาย ใช้เวลา
พารามิเตอร์ มีเพียงตัวเดียวคือข้อมูลชนิด type1
คืนค่า iterator ที่ชี้ไปยังโหนดที่มีบนต้นไม้แดงดำ
ฟังก์ชั่นต้นแบบ iter lower_bound(type1);
ข้อควรระวัง ไม่มี

upper_bound[แก้ไข | แก้ไขต้นฉบับ]

erase[แก้ไข | แก้ไขต้นฉบับ]

operator[แก้ไข | แก้ไขต้นฉบับ]

[][แก้ไข | แก้ไขต้นฉบับ]

++[แก้ไข | แก้ไขต้นฉบับ]

--[แก้ไข | แก้ไขต้นฉบับ]

สารบัญ[แก้ไข | แก้ไขต้นฉบับ]

พัฒนา 75% ตั้งแต่ 21 กุมภาพันธ์ 2556 stack
พัฒนา 75% ตั้งแต่ 21 กุมภาพันธ์ 2556 queue
พัฒนา 75% ตั้งแต่ 21 กุมภาพันธ์ 2556 priority_queue
พัฒนา 75% ตั้งแต่ 21 กุมภาพันธ์ 2556 deque
พัฒนา 75% ตั้งแต่ 21 กุมภาพันธ์ 2556 vector
พัฒนา 25% ตั้งแต่ 21 กุมภาพันธ์ 2556 map
พัฒนา 0% ตั้งแต่ 21 กุมภาพันธ์ 2556 set