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

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

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