ไลบรารี C ++ - <map>

ความรู้เบื้องต้นเกี่ยวกับแผนที่

แผนที่เป็นพจนานุกรมเหมือนโครงสร้างข้อมูล เป็นลำดับของคู่ (คีย์ค่า) ซึ่งมีเพียงค่าเดียวเท่านั้นที่เชื่อมโยงกับแต่ละคีย์ที่ไม่ซ้ำกัน มันมักจะถูกเรียกว่าเป็นอาเรย์

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

typedef pair<const Key, T> value_type;

โดยทั่วไปแผนที่จะใช้เป็นแบบไบนารี Search Tree

แผนที่ขนาดศูนย์ก็ใช้ได้เช่นกัน ในกรณีนั้น map.begin () และ map.end () ชี้ไปที่ตำแหน่งเดียวกัน

คำจำกัดความ

ด้านล่างนี้คือคำจำกัดความของ std :: map จากไฟล์ส่วนหัว <map>

template < class Key,
           class T,
           class Compare = less<Key>,
           class Alloc = allocator<pair<const Key,T> >
           > class map;

พารามิเตอร์

  • Key - ประเภทของคีย์

  • T - ประเภทของค่าที่แมป

  • Compare - เพรดิเคตไบนารีที่ใช้คีย์องค์ประกอบสองปุ่มเป็นอาร์กิวเมนต์และส่งคืนบูล

  • Alloc - ประเภทของวัตถุตัวจัดสรร

T อาจถูกแทนที่ด้วยประเภทข้อมูลอื่น ๆ รวมถึงประเภทที่ผู้ใช้กำหนด

ประเภทสมาชิก

ประเภทสมาชิกต่อไปนี้สามารถใช้เป็นพารามิเตอร์หรือประเภทการส่งคืนโดยฟังก์ชันสมาชิก

ซีเนียร์ ประเภทสมาชิก คำจำกัดความ
1 key_type คีย์ (พารามิเตอร์แรกของเทมเพลต)
2 mapped_type T (พารามิเตอร์ที่สองของเทมเพลต)
3 key_compare เปรียบเทียบ (พารามิเตอร์ที่สามของเทมเพลต)
4 จัดสรร _type Alloc (พารามิเตอร์ที่สี่ของเทมเพลต)
5 value_type จับคู่ <const key_type, mapped_type>
6 value_compare คลาสฟังก์ชันที่ซ้อนกันเพื่อเปรียบเทียบองค์ประกอบ
7 เอกสารอ้างอิง จัดสรร _type :: อ้างอิง
8 const_reference จัดสรร _type :: const_reference
9 ตัวชี้ จัดสรร _type :: ตัวชี้
10 const_pointer จัดสรร _type :: const_pointer
11 iterator bi-directional iterator เป็นvalue_type
12 const_iterator ตัววนซ้ำแบบสองทิศทางไปยัง const value_type
13 reverse_iterator ตัววนซ้ำย้อนกลับ
14 const_reverse_iterator ตัววนซ้ำแบบย้อนกลับคงที่
15 different_type ptrdiff_t
16 size_type size_t

ฟังก์ชั่นจาก <map>

ด้านล่างนี้คือรายการวิธีการทั้งหมดจากส่วนหัว <map>

ตัวสร้าง

ซีเนียร์ วิธีการและคำอธิบาย
1 แผนที่ :: ตัวสร้างแผนที่ เริ่มต้น

สร้างแผนที่ว่างโดยมีองค์ประกอบเป็นศูนย์

2 แผนที่ :: ตัว สร้างช่วงแผนที่

สร้างแผนที่ที่มีองค์ประกอบเป็นจำนวนมากในช่วงแรกของการที่ผ่านมา

3 แผนที่ :: ตัว สร้างสำเนาแผนที่

สร้างแผนที่พร้อมสำเนาของแต่ละองค์ประกอบที่มีอยู่ในแผนที่ที่มีอยู่

4 แผนที่ :: ตัวสร้างการย้ายแผนที่

สร้างแผนที่ที่มีเนื้อหาอื่น ๆ โดยใช้ความหมายการย้าย

5 แผนที่ :: ตัว สร้างรายการเริ่มต้นแผนที่

สร้างแผนที่จากรายการเริ่มต้น

Destructor

ซีเนียร์ วิธีการและคำอธิบาย
1 แผนที่ :: ~ แผนที่

ทำลายวัตถุแผนที่โดยยกเลิกการจัดสรรหน่วยความจำ

ฟังก์ชั่นสมาชิก

ซีเนียร์ วิธีการและคำอธิบาย
1 แผนที่ :: ที่

ผลตอบแทนอ้างอิงกับค่าแมปที่เกี่ยวข้องกับคีย์k

2 แผนที่ :: เริ่มต้น

ส่งคืนตัววนซ้ำซึ่งอ้างถึงองค์ประกอบแรกของแผนที่

3 แผนที่ :: cbegin

ส่งกลับค่าคงที่ตัววนซ้ำซึ่งอ้างถึงองค์ประกอบแรกของแผนที่

4 แผนที่ :: cend

ส่งคืนตัววนซ้ำค่าคงที่ซึ่งชี้ไปยังองค์ประกอบที่ผ่านมาถึงจุดสิ้นสุดของแผนที่

5 แผนที่ :: ชัดเจน

ทำลายแผนที่โดยลบองค์ประกอบทั้งหมดและกำหนดขนาดของแผนที่เป็นศูนย์

6 แผนที่ :: นับ

ผลตอบแทนจำนวนของค่าแมปเกี่ยวข้องกับคีย์k

7 แผนที่ :: crbegin

ส่งคืนตัววนซ้ำแบบย้อนกลับคงที่ซึ่งชี้ไปยังองค์ประกอบสุดท้ายของคอนเทนเนอร์ i

8 แผนที่ :: crend

ส่งกลับค่าคงที่ย้อนกลับตัววนซ้ำซึ่งชี้ไปที่องค์ประกอบทางทฤษฎีที่อยู่ก่อนองค์ประกอบแรกในคอนเทนเนอร์ i

9 แผนที่ :: emplace

ขยายคอนเทนเนอร์โดยการใส่องค์ประกอบใหม่

10 แผนที่ :: เวอร์ชันคำใบ้emplace_hint

แทรกองค์ประกอบใหม่ในแผนที่โดยใช้คำใบ้เป็นตำแหน่งขององค์ประกอบ

11 แผนที่ :: ว่างเปล่า

ทดสอบว่าแผนที่ว่างหรือไม่

12 แผนที่ :: จบ

ส่งคืนตัววนซ้ำซึ่งชี้ไปยังองค์ประกอบที่ผ่านจุดสิ้นสุดในแผนที่

13 แผนที่ :: ช่วงที่เท่าเทียมกัน

ส่งคืนช่วงขององค์ประกอบที่ตรงกับคีย์ที่ระบุ

14 แผนที่ :: ลบ ตำแหน่งรุ่น

เอาองค์ประกอบหนึ่งของแผนที่จากตำแหน่ง

15 แผนที่ :: ลบ ตำแหน่งรุ่น

เอาองค์ประกอบหนึ่งของแผนที่จากตำแหน่ง

16 แผนที่ :: ลบ คีย์

เอาค่าแมปเกี่ยวข้องกับคีย์k

17 แผนที่ :: ลบ เวอร์ชันช่วง

ลบช่วงขององค์ประกอบออกจากแผนที่

18 แผนที่ :: ลบ เวอร์ชันช่วง

ลบช่วงขององค์ประกอบออกจากแผนที่

19 แผนที่ :: ค้นหา

พบว่าองค์ประกอบที่สำคัญที่เกี่ยวข้องกับk

20 แผนที่ :: get_allocator

ส่งคืนตัวจัดสรรที่เกี่ยวข้องกับแผนที่

21 แผนที่ :: แทรก องค์ประกอบเดียว

ขยายคอนเทนเนอร์โดยการแทรกองค์ประกอบใหม่ในแผนที่

22 แผนที่ :: แทรก เวอร์ชันคำใบ้

ขยายคอนเทนเนอร์โดยการแทรกองค์ประกอบใหม่ในแผนที่

23 แผนที่ :: แทรก เวอร์ชันช่วง

ขยายคอนเทนเนอร์โดยการใส่องค์ประกอบใหม่ในแผนที่

24 map :: insert move hint verstion

ขยายแผนที่โดยการแทรกองค์ประกอบใหม่

25 map :: แทรก เวอร์ชันรายการ initializer

ขยายแผนที่โดยการแทรกองค์ประกอบใหม่จากรายการ initializer

26 แผนที่ :: key_comp

ส่งคืนวัตถุฟังก์ชั่นที่เปรียบเทียบกุญแจซึ่งเป็นสำเนาของภาชนะคอนสตรัคอาร์กิวเมนต์comp

27 แผนที่ :: lower_bound

ส่งกลับชี้ไป iterator องค์ประกอบแรกที่ไม่น้อยกว่าที่สำคัญk

28 แผนที่ :: max_size

แสดงผลจำนวนองค์ประกอบสูงสุดที่แผนที่สามารถถือครองได้

29 map :: operator = copy version

กำหนดเนื้อหาใหม่ให้กับแผนที่โดยแทนที่รายการเก่าและปรับเปลี่ยนขนาดหากจำเป็น

30 แผนที่ :: ตัวดำเนินการ = ย้ายเวอร์ชัน

ย้ายเนื้อหาของแผนที่หนึ่งไปยังอีกแผนที่หนึ่งและปรับเปลี่ยนขนาดหากจำเป็น

31 map :: operator = เวอร์ชันรายการ initializer

คัดลอกองค์ประกอบจากรายการ initializer ไปยังแผนที่

32 map :: operator [] copy version

หากคีย์kตรงกับองค์ประกอบในคอนเทนเนอร์เมธอดจะส่งคืนการอ้างอิงไปยังองค์ประกอบ

33 แผนที่ :: ตัวดำเนินการ [] ย้ายเวอร์ชัน

หากคีย์kตรงกับองค์ประกอบในคอนเทนเนอร์เมธอดจะส่งคืนการอ้างอิงไปยังองค์ประกอบ

34 แผนที่ :: rbegin

ส่งคืนตัววนซ้ำแบบย้อนกลับซึ่งชี้ไปยังองค์ประกอบสุดท้ายของแผนที่

35 แผนที่ :: rend

ส่งคืนตัววนซ้ำแบบย้อนกลับซึ่งชี้ไปที่ปลายด้านหลังของแผนที่ i

36 แผนที่ :: ขนาด

ส่งคืนจำนวนองค์ประกอบที่มีอยู่ในแผนที่

37 แผนที่ :: แลกเปลี่ยน

เปลี่ยนเนื้อหาของแผนที่ด้วยเนื้อหาของแผนที่ x

38 แผนที่ :: upper_bound

ส่งกลับ iterator ชี้ไปที่องค์ประกอบแรกซึ่งมากกว่าที่สำคัญk

39 แผนที่ :: value_comp

ผลตอบแทนที่เป็นวัตถุที่ฟังก์ชั่นที่เปรียบเทียบวัตถุประเภทมาตรฐาน :: แผนที่ :: VALUE_TYPE

ฟังก์ชันที่ไม่มีสมาชิกมากเกินไป

ซีเนียร์ วิธีการและคำอธิบาย
1 ตัวดำเนินการ ==

ทดสอบว่าสองแผนที่เท่ากันหรือไม่

2 ตัวดำเนินการ! =

ทดสอบว่าสองแผนที่เท่ากันหรือไม่

3 ตัวดำเนินการ <

ทดสอบว่าแผนที่แรกน้อยกว่าแผนที่อื่นหรือไม่

4 แผนที่ :: ตัวดำเนินการ <=

ทดสอบว่าแผนที่แรกน้อยกว่าหรือเท่ากับแผนที่อื่นหรือไม่

5 ตัวดำเนินการ>

ทดสอบว่าแผนที่แรกมีค่ามากกว่าแผนที่อื่นหรือไม่

6 ตัวดำเนินการ> =

ทดสอบว่าแผนที่แรกมีค่ามากกว่าหรือเท่ากับแผนที่อื่นหรือไม่

7 แลกเปลี่ยน ()

เปลี่ยนเนื้อหาของแผนที่ด้วยเนื้อหาของแผนที่ x

ข้อมูลเบื้องต้นเกี่ยวกับมัลติแมป

Multimap คือพจนานุกรมเหมือนโครงสร้างข้อมูล เป็นลำดับของคู่(คีย์ค่า)ซึ่งสามารถเชื่อมโยงหลายค่ากับคีย์ที่เท่ากันได้ มันมักจะถูกเรียกว่าเป็นอาเรย์

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

typedef pair<const Key, T> value_type;

โดยทั่วไป Multimaps จะถูกนำไปใช้เป็น Binary Search Tree

มัลติแมปขนาดศูนย์ก็ใช้ได้เช่นกัน ในกรณีนั้น multimap.begin () และ multimap.end () ชี้ไปที่ตำแหน่งเดียวกัน

คำจำกัดความ

ด้านล่างนี้คือคำจำกัดความของ std :: multimap จากไฟล์ส่วนหัว <multimap>

template < class Key,
           class T,
           class Compare = less<Key>,
           class Alloc = allocator<pair<const Key,T> >
           > class multimap;

พารามิเตอร์

  • Key - ประเภทของคีย์

  • T - ประเภทของค่าที่แมป

  • Compare - เพรดิเคตไบนารีที่ใช้คีย์องค์ประกอบสองปุ่มเป็นอาร์กิวเมนต์และส่งคืนบูล

  • Alloc - ประเภทของวัตถุตัวจัดสรร

  • T อาจถูกแทนที่ด้วยประเภทข้อมูลอื่น ๆ รวมถึงประเภทที่ผู้ใช้กำหนด

ประเภทสมาชิก

ประเภทสมาชิกต่อไปนี้สามารถใช้เป็นพารามิเตอร์หรือประเภทการส่งคืนโดยฟังก์ชันสมาชิก

ซีเนียร์ ประเภทสมาชิก คำจำกัดความ
1 key_type คีย์ (พารามิเตอร์แรกของเทมเพลต)
2 mapped_type T (พารามิเตอร์ที่สองของเทมเพลต)
3 key_compare เปรียบเทียบ (พารามิเตอร์ที่สามของเทมเพลต)
4 จัดสรร _type Alloc (พารามิเตอร์ที่สี่ของเทมเพลต)
5 value_type จับคู่ <const key_type, mapped_type>
6 value_compare คลาสฟังก์ชันที่ซ้อนกันเพื่อเปรียบเทียบองค์ประกอบ
7 เอกสารอ้างอิง จัดสรร _type :: อ้างอิง
8 const_reference จัดสรร _type :: const_reference
9 ตัวชี้ จัดสรร _type :: ตัวชี้
10 const_pointer จัดสรร _type :: const_pointer
11 iterator bi-directional iterator เป็นvalue_type
12 const_iterator ตัววนซ้ำแบบสองทิศทางไปยัง const value_type
13 reverse_iterator ตัววนซ้ำย้อนกลับ
14 const_reverse_iterator ตัววนซ้ำแบบย้อนกลับคงที่
15 different_type ptrdiff_t
16 size_type size_t

ฟังก์ชั่นจาก <multimap>

ด้านล่างนี้คือรายการวิธีการทั้งหมดจากส่วนหัว <multimap>

ตัวสร้าง

ซีเนียร์ วิธีการและคำอธิบาย
1 multimap :: ตัว สร้างเริ่มต้นหลายแผนที่

สร้าง Multimap ว่างเปล่าโดยมีองค์ประกอบเป็นศูนย์

2 multimap :: ตัว สร้างช่วงหลายแผนที่

โครงสร้าง Multimap ที่มีองค์ประกอบเป็นจำนวนมากในช่วงแรกของการที่ผ่านมา

3 multimap :: ตัว สร้างสำเนาหลายแผนที่

สร้างมัลติแมปพร้อมสำเนาของแต่ละองค์ประกอบที่มีอยู่ในมัลติแมปที่มีอยู่

4 multimap :: ตัวสร้างการย้ายหลายแผนที่

สร้างมัลติแมปที่มีเนื้อหาของสิ่งอื่น ๆ โดยใช้ความหมายการย้าย

5 multimap :: ตัว สร้างรายการเริ่มต้นหลายแผนที่

สร้างแผนที่หลายรายการจากรายการเริ่มต้น

Destructor

ซีเนียร์ วิธีการและคำอธิบาย
1 มัลติแมป :: ~ มัลติแมป

ทำลายวัตถุหลายแผนที่โดยการจัดสรรหน่วยความจำ

ฟังก์ชั่นสมาชิก

ซีเนียร์ วิธีการและคำอธิบาย
1 มัลติแมป :: เริ่มต้น

ส่งคืนตัววนซ้ำซึ่งอ้างถึงองค์ประกอบแรกของมัลติแมป

2 มัลติแมป :: cbegin

ส่งกลับค่าคงที่ตัววนซ้ำซึ่งอ้างถึงองค์ประกอบแรกของมัลติแมป

3 มัลติแมป :: cend

ส่งคืนตัววนซ้ำค่าคงที่ซึ่งชี้ไปยังองค์ประกอบที่ผ่านมา - ปลายสุดของมัลติแมป

4 มัลติแมป :: ชัดเจน

ทำลายมัลติแมปโดยการลบองค์ประกอบทั้งหมดและกำหนดขนาดของมัลติแมปเป็นศูนย์

5 มัลติแมป :: นับ

จำนวนผลตอบแทนของค่า multimapped เกี่ยวข้องกับคีย์k

6 มัลติแมป :: crbegin

ส่งคืนตัววนซ้ำแบบย้อนกลับคงที่ซึ่งชี้ไปยังองค์ประกอบสุดท้ายของคอนเทนเนอร์

7 มัลติแมป :: crend

ส่งคืนตัววนซ้ำแบบย้อนกลับคงที่ซึ่งชี้ไปที่องค์ประกอบทางทฤษฎีที่อยู่ก่อนองค์ประกอบแรกในคอนเทนเนอร์

8 มัลติแมป :: emplace

ขยายคอนเทนเนอร์โดยการใส่องค์ประกอบใหม่

9 multimap :: เวอร์ชันคำใบ้emplace_hint

แทรกองค์ประกอบใหม่ในมัลติแมปโดยใช้คำใบ้เป็นตำแหน่งสำหรับองค์ประกอบ

10 มัลติแมป :: ว่างเปล่า

ทดสอบว่ามัลติแมปว่างเปล่าหรือไม่

11 มัลติแมป :: end

ส่งคืนตัววนซ้ำซึ่งชี้ไปยังองค์ประกอบที่ผ่านจุดสิ้นสุดในมัลติแมป

12 มัลติแมป :: equal_range

ส่งคืนช่วงขององค์ประกอบที่ตรงกับคีย์ที่ระบุ

13 มัลติแมป :: ลบ เวอร์ชันตำแหน่ง

เอาองค์ประกอบเดียวของ Multimap จากตำแหน่ง

14 มัลติแมป :: ลบ เวอร์ชันตำแหน่ง

เอาองค์ประกอบเดียวของ Multimap จากตำแหน่ง

15 มัลติแมป :: ลบ คีย์

เอาค่าแมปเกี่ยวข้องกับคีย์k

16 มัลติแมป :: ลบ เวอร์ชันช่วง

ลบช่วงขององค์ประกอบออกจากมัลติแมป

17 มัลติแมป :: ลบ เวอร์ชันช่วง

ลบช่วงขององค์ประกอบออกจากมัลติแมป

18 มัลติแมป :: ค้นหา

พบว่าองค์ประกอบที่สำคัญที่เกี่ยวข้องกับk

19 มัลติแมป :: get_allocator

ส่งคืนตัวจัดสรรที่เกี่ยวข้องกับมัลติแมป

20 มัลติแมป :: แทรก องค์ประกอบเดียว

ขยายคอนเทนเนอร์โดยการแทรกองค์ประกอบใหม่ในมัลติแมป

21 มัลติแมป :: แทรก เวอร์ชันคำใบ้

ขยายคอนเทนเนอร์โดยการแทรกองค์ประกอบใหม่ในมัลติแมป

22 มัลติแมป :: แทรก เวอร์ชันช่วง

ขยายคอนเทนเนอร์โดยการใส่องค์ประกอบใหม่ในมัลติแมป

23 multimap :: insert move hint verstion

ขยายมัลติแมปโดยการแทรกองค์ประกอบใหม่

24 มัลติแมป :: แทรก เวอร์ชันรายการตัวเริ่มต้น

ขยายมัลติแมปโดยการแทรกองค์ประกอบใหม่จากรายการ initializer

25 มัลติแมป :: key_comp

ส่งคืนวัตถุฟังก์ชั่นที่เปรียบเทียบกุญแจซึ่งเป็นสำเนาของภาชนะคอนสตรัคอาร์กิวเมนต์comp

26 มัลติแมป :: lower_bound

ส่งกลับชี้ไป iterator องค์ประกอบแรกที่ไม่น้อยกว่าที่สำคัญk

27 มัลติแมป :: max_size

ส่งคืนจำนวนองค์ประกอบสูงสุดที่สามารถจัดเก็บได้ด้วยแผนที่หลายแผนที่

28 multimap :: operator = copy version

กำหนดเนื้อหาใหม่ให้กับมัลติแมปโดยแทนที่รายการเก่าและปรับเปลี่ยนขนาดหากจำเป็น

29 multimap :: operator = ย้ายเวอร์ชัน

ย้ายเนื้อหาของแผนที่หลายรายการไปยังอีกแผนที่หนึ่งและปรับเปลี่ยนขนาดหากจำเป็น

30 multimap :: operator = เวอร์ชันรายการ initializer

คัดลอกองค์ประกอบจากรายการเริ่มต้นไปยังแผนที่หลายแผนที่

31 มัลติแมป :: rbegin

ส่งคืนตัววนซ้ำแบบย้อนกลับซึ่งชี้ไปยังองค์ประกอบสุดท้ายของมัลติแมป

32 มัลติแมป :: rend

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

33 มัลติแมป :: ขนาด

ส่งคืนจำนวนองค์ประกอบที่มีอยู่ในมัลติแมป

34 มัลติแมป :: แลกเปลี่ยน

แลกเปลี่ยนเนื้อหาของมัลติแมปด้วยเนื้อหาของมัลติแมป x

35 มัลติแมป :: upper_bound

ส่งกลับ iterator ชี้ไปที่องค์ประกอบแรกซึ่งมากกว่าที่สำคัญk

36 มัลติแมป :: value_comp

ส่งคืนวัตถุฟังก์ชั่นที่เปรียบเทียบวัตถุประเภทมาตรฐาน :: Multimap :: VALUE_TYPE

ฟังก์ชันที่ไม่มีสมาชิกมากเกินไป

ซีเนียร์ วิธีการและคำอธิบาย
1 ตัวดำเนินการ ==

ทดสอบว่าสองมัลติแมปเท่ากันหรือไม่

2 ตัวดำเนินการ! =

ทดสอบว่าสองมัลติแมปเท่ากันหรือไม่

3 ตัวดำเนินการ <

ทดสอบว่ามัลติแมปแรกน้อยกว่าอื่นหรือไม่

4 มัลติแมป :: ตัวดำเนินการ <=

ทดสอบว่ามัลติแมปแรกน้อยกว่าหรือเท่ากับอื่น ๆ หรือไม่

5 ตัวดำเนินการ>

ทดสอบว่ามัลติแมปแรกมากกว่าที่อื่นหรือไม่

6 ตัวดำเนินการ> =

ทดสอบว่ามัลติแมปแรกมากกว่าหรือเท่ากับอื่น ๆ หรือไม่

7 แลกเปลี่ยน ()

แลกเปลี่ยนเนื้อหาของมัลติแมปด้วยเนื้อหาของมัลติแมป x