บทความนี้อธิบายการทำงาน ไวยากรณ์ และตัวอย่างของฟังก์ชัน 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)