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

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

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

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

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

ฟังก์ชัน multimap::max_size() ประกาศอยู่ใน header <map> คืนค่าขนาดสูงสุดทฤษฎี (maximum theoretical size) ของ multimap container นั่นคือจำนวนองค์ประกอบสูงสุดที่ container สามารถจัดเก็บได้ภายใต้ข้อจำกัดของระบบและ library implementation

ค่านี้เป็น potential capacity ไม่ใช่การรับประกันว่าจะจัดเก็บได้จริง เพราะขึ้นอยู่กับหน่วยความจำที่มีอยู่ (available memory) และ fragmentation

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

multiMap_name.max_size();

พารามิเตอร์

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

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

คืนค่าจำนวนองค์ประกอบสูงสุดที่ container สามารถจัดเก็บได้ (size_type)

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

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

int main() {
    // สร้าง multimap ประเภทต่างๆ
    multimap<int, int> mul;
    multimap<char, char> char_mul;
    multimap<float, float> float_mul;
    
    cout << "Max size of multimap is " << mul.max_size();
    cout << "\nMax size of multimap is " << char_mul.max_size();
    cout << "\nMax size of multimap is " << float_mul.max_size();
    
    return 0;
}

ผลลัพธ์ (ตัวอย่างบนระบบ 64-bit)

Max size of multimap is 461168601842738790
Max size of multimap is 461168601842738790
Max size of multimap is 461168601842738790

ข้อสังเกตสำคัญ

  • ค่า max_size() มักจะเท่ากันสำหรับทุกประเภทข้อมูลบน architecture เดียวกัน (ขึ้นอยู่กับ pointer size)
  • บนระบบ 64-bit ค่ามักใกล้เคียง 262 - 1 (ประมาณ 4.6 × 1018)
  • ค่านี้คำนวณจาก std::numeric_limits<size_type>::max() / sizeof(node) ประมาณ
  • ในทางปฏิบัติ จะไม่สามารถจัดเก็บข้อมูลถึงค่านี้ได้ เพราะหน่วยความจำไม่พอ

สรุป

max_size() ใช้สำหรับตรวจสอบขีดจำกัดทฤษฎีของ container ไม่ใช่สำหรับเช็คพื้นที่ว่างจริง หากต้องการรู้ว่าสามารถแทรกข้อมูลเพิ่มได้อีกเท่าไร ควรใช้การจัดการหน่วยความจำระดับระบบบแทน