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