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 element | Past-last |
| rbegin() / rend() | Reverse (หลังไปหน้า) | Last element | Before-first |
สรุป
rbegin() ใช้เริ่มต้นการ遍历แบบย้อนกลับของ multimap ร่วมกับ rend() จะวนลูปได้ครบทุกองค์ประกอบจากท้ายไปหัว เหมาะสำหรับการประมวลผลข้อมูลจากค่ามากไปน้อย (เพราะ multimap จัดเรียงจากน้อยไปมาก)