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

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

Multimap ใน C++ STL คืออะไร?

Multimap เป็น associative container ที่คล้ายกับ map แต่อนุญาตให้มีหลายค่าผูกกับคีย์เดียวกันได้ ข้อมูลจัดเรียงอัตโนมัติตามคีย์

ฟังก์ชัน multimap::rbegin() คืออะไร?

ฟังก์ชัน multimap::rbegin() (reverse begin) ประกาศอยู่ใน header <map> คืนค่า reverse iterator ชี้ไปยังองค์ประกอบสุดท้ายของ multimap container ใช้สำหรับ遍历แบบย้อนกลับ (reverse traversal) จากท้ายไปหัว

รูปแบบไวยากรณ์ (Syntax)

multiMap_name.rbegin();

พารามิเตอร์

ฟังก์ชันนี้ไม่รับพารามิเตอร์ใดๆ

ค่าที่ส่งคืน (Return Value)

คืนค่า reverse_iterator ชี้ไปยังองค์ประกอบสุดท้าย (last element) ของ container

ตัวอย่างการใช้งาน

#include <bits/stdc++.h>
using namespace std;

int main() {
    multimap<int, int> mul;
    
    // แทรกข้อมูล
    mul.insert({1, 10});
    mul.insert({2, 20});
    mul.insert({3, 30});
    mul.insert({4, 40});
    mul.insert({5, 50});
    
    // ดึงองค์ประกอบแรกแบบ reverse (คือตัวสุดท้าย)
    cout << "First element is: " << mul.rbegin()->first << "," << mul.rbegin()->second;
    
    // แสดงข้อมูลทั้งหมดแบบ reverse
    cout << "\nElements in multimap is: \n";
    cout << "KEY\tELEMENT\n";
    for (auto it = mul.rbegin(); it != mul.rend(); ++it) {
        cout << it->first << '\t' << it->second << '\n';
    }
    
    return 0;
}

ผลลัพธ์

First element is: 5,50
Elements in multimap is:
KEY	ELEMENT
5	50
4	40
3	30
2	20
1	10

ความแตกต่างระหว่าง begin()/end() และ rbegin()/rend()

คู่ฟังก์ชันทิศทางจุดเริ่มจุดสิ้นสุด
begin() / end()Forward (หน้าไปหลัง)First elementPast-last
rbegin() / rend()Reverse (หลังไปหน้า)Last elementBefore-first

สรุป

rbegin() ใช้เริ่มต้นการ遍历แบบย้อนกลับของ multimap ร่วมกับ rend() จะวนลูปได้ครบทุกองค์ประกอบจากท้ายไปหัว เหมาะสำหรับการประมวลผลข้อมูลจากค่ามากไปน้อย (เพราะ multimap จัดเรียงจากน้อยไปมาก)