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

ฟังก์ชัน multimap::begin() และ multimap::end() ใน C++ STL

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