Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ฟังก์ชัน multimap::key_comp() ใน C++ STL

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 ในส่วนอื่นของโปรแกรม