Multimap ใน C++ STL คืออะไร?
Multimap เป็น associative container ที่คล้ายกับ map แต่อนุญาตให้มีหลายค่าผูกกับคีย์เดียวกันได้ ข้อมูลจัดเรียงอัตโนมัติตามคีย์
ฟังก์ชัน multimap::begin() คืออะไร?
ฟังก์ชัน multimap::begin() ประกาศอยู่ใน header <map> คืนค่า iterator ชี้ไปยังองค์ประกอบแรกของ multimap container ใช้สำหรับเริ่มต้นการ遍历 (traversal) แบบ forward
รูปแบบไวยากรณ์ (Syntax)
multimap_name.begin();
พารามิเตอร์
ไม่รับพารามิเตอร์
ค่าที่ส่งคืน
คืนค่า iterator ชี้ไปยังองค์ประกอบแรก หาก container ว่าง จะเท่ากับ end() และไม่ควร dereference
ฟังก์ชัน multimap::end() คืออะไร?
ฟังก์ชัน multimap::end() ประกาศอยู่ใน header <map> คืนค่า iterator ชี้ไปยังตำแหน่ง หลังองค์ประกอบสุดท้าย (past-the-end) ใช้เป็นจุดสิ้นสุดในการ遍历แบบ forward
รูปแบบไวยากรณ์ (Syntax)
multimap_name.end();
พารามิเตอร์
ไม่รับพารามิเตอร์
ค่าที่ส่งคืน
คืนค่า iterator ชี้ไปยัง past-the-end position หาก container ว่าง จะเท่ากับ begin()
ตัวอย่างการใช้งาน
ตัวอย่างที่ 1: ใช้ begin() ดึงองค์ประกอบแรก
#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});
// ดึงคู่แรก
auto i = mul.begin();
cout << "First element in multimap is: ";
cout << "{" << i->first << ", " << i->second << "}\n";
// แสดงทั้งหมด
cout << "\nElements in multimap is: \n";
cout << "KEY\tELEMENT\n";
for (auto it = mul.begin(); it != mul.end(); ++it) {
cout << it->first << '\t' << it->second << '\n';
}
return 0;
}
ผลลัพธ์
First element in multimap is: {1, 10}
Elements in multimap is:
KEY ELEMENT
1 10
2 20
3 30
4 40
5 50
ตัวอย่างที่ 2: ใช้ end() เป็นเงื่อนไขสิ้นสุด loop
#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});
// ใช้ begin() และ end() คู่กันสำหรับ range
cout << "\nElements in multimap is: \n";
cout << "KEY\tELEMENT\n";
for (auto it = mul.begin(); it != mul.end(); ++it) {
cout << it->first << '\t' << it->second << '\n';
}
return 0;
}
ผลลัพธ์
Elements in multimap is: KEY ELEMENT 1 10 2 20 3 30 4 40 5 50
สรุป
begin() และ end() เป็นคู่ฟังก์ชันพื้นฐานสำหรับ forward traversal ของ multimap (และ STL containers ทุกประเภท) ให้ range [begin(), end()) ที่ครอบคลุมองค์ประกอบทั้งหมด เป็นรูปแบบมาตรฐาน (idiomatic) ของ C++ STL