Multimap ใน C++ STL คืออะไร?
Multimap เป็น associative container ที่คล้ายกับ map แต่อนุญาตให้มีหลายค่าผูกกับคีย์เดียวกันได้ ข้อมูลจัดเรียงอัตโนมัติตามคีย์
ฟังก์ชัน multimap::key_comp() คืออะไร?
ฟังก์ชัน multimap::key_comp() ประกาศอยู่ใน header <map> คืนค่า key comparison object (โดยค่าเริ่มต้นคือ less-than object ทำงานเหมือน operator <) ใช้สำหรับเปรียบเทียบลำดับของคีย์ใน multimap container
ฟังก์ชันนี้รับ 2 อาร์กิวเมนต์ และคืนค่า true หากคีย์แรกน้อยกว่าคีย์ที่สอง (ควรอยู่ก่อน) มิฉะนั้นคืนค่า false
รูปแบบไวยากรณ์ (Syntax)
Key_compare key_comp();
พารามิเตอร์
ฟังก์ชันนี้ไม่รับพารามิเตอร์ใดๆ
ค่าที่ส่งคืน (Return Value)
คืนค่า comparison object สำหรับเปรียบเทียบคีย์
ตัวอย่างการใช้งาน
#include <iostream>
#include <map>
using namespace std;
int main() {
multimap<int, char> mul;
multimap<int, char>::key_compare cmp = mul.key_comp();
// แทรกข้อมูล
mul.insert(make_pair(0, 'A'));
mul.insert(make_pair(1, 'B'));
mul.insert(make_pair(2, 'C'));
mul.insert(make_pair(3, 'D'));
int a = mul.rbegin()->first;
multimap<int, char>::iterator it = mul.begin();
cout << "Elements at given key is: " << '\n';
do {
cout << it->first << " = " << it->second << '\n';
} while (cmp((*it++).first, a));
return 0;
}
ผลลัพธ์
Elements at given key is: 0 = A 1 = B 2 = C 3 = D
การประยุกต์ใช้
ฟังก์ชัน key_comp() มีประโยชน์เมื่อ:
- ต้องการเขียน custom comparator สำหรับ multimap
- ต้องการตรวจสอบลำดับของคีย์โดยไม่ต้อง iterate ทั้ง container
- ใช้ร่วมกับ algorithm ที่ต้องการ comparison function
สรุป
key_comp() ให้การเข้าถึง comparison object ภายในของ multimap ซึ่งเป็นเครื่องมือสำคัญสำหรับการทำงานกับคีย์ที่มี custom ordering หรือเมื่อต้องการ reuse comparison logic ในส่วนอื่นของโปรแกรม