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

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

บทความนี้อธิบายการทำงาน ไวยากรณ์ และตัวอย่างของฟังก์ชัน map::max_size() ใน C++ STL

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

Map เป็นคอนเทนเนอร์แบบ associative ที่จัดเก็บข้อมูลเป็นคู่คีย์-ค่า (key-value pairs) โดยข้อมูลจะถูกจัดเรียงอัตโนมัติตามคีย์ คีย์แต่ละตัวเป็นเอกลักษณ์และใช้เข้าถึงค่าที่เกี่ยวข้อง

map::max_size() คืออะไร?

map::max_size() เป็นฟังก์ชันในบิลต์อิน (built-in) ใน C++ STL นิยามในเฮดเดอร์ <map> ใช้สำหรับดึงขนาดสูงสุดที่ map container สามารถจุได้ (maximum potential size)

ฟังก์ชันนี้บอก "ศักยภาพสูงสุด" ของคอนเทนเนอร์ ไม่ได้หมายความว่าจะจัดเก็บข้อมูลได้ถึงขนาดนั้นจริงๆ (ขึ้นอยู่กับหน่วยความจำระบบ)

ไวยากรณ์ (Syntax)

map_name.max_size();

พารามิเตอร์

ไม่มีพารามิเตอร์

ค่าที่ส่งคืน

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

ตัวอย่าง Input/Output

Input:

map<char, int> newmap; newmap.max_size();

Output:

Max size of map is: 461168601842738790
ค่าที่ได้ขึ้นอยู่กับสถาปัตยกรรมระบบ (32-bit vs 64-bit) และการจัดสรรหน่วยความจำ

ตัวอย่างโค้ด

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

int main() {
    map<int, int> TP_1, TP_2;
    TP_1.insert({ 0, 10 });
    
    cout << "Max size of map with elements is: " << TP_1.max_size() << endl;
    cout << "Max size of map without elements is: " << TP_2.max_size() << endl;
    
    return 0;
}

ผลลัพธ์

Max size of map with elements is: 461168601842738790
Max size of map without elements is: 461168601842738790

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

  • ค่า max_size() เหมือนกันทั้ง map ว่างและ map ที่มีข้อมูล เพราะเป็นขีดจำกัดทางทฤษฎีของคอนเทนเนอร์
  • ในระบบ 64-bit ค่ามักจะเป็น 2^62 - 1 (ประมาณ 4.6 × 10^18)
  • ขนาดจริงที่ใช้งานได้ถูกจำกัดโดย size() และหน่วยความจำที่มีอยู่
  • ฟังก์ชันนี้มีความซับซ้อนด้านเวลา O(1)

ฟังก์ชันที่เกี่ยวข้อง

  • size() – จำนวนองค์ประกอบปัจจุบัน
  • empty() – ตรวจสอบว่า map ว่างหรือไม่
  • resize() – ไม่มีใน map (มีใน vector/deque)