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

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


ในบทความนี้ เราจะพูดถึงการทำงาน ไวยากรณ์ และตัวอย่างของฟังก์ชัน multimap::get_allocator() ใน C++ STL

มัลติแมปใน C++ STL คืออะไร

Multimaps เป็นคอนเทนเนอร์ที่เชื่อมโยงกัน ซึ่งคล้ายกับคอนเทนเนอร์แผนที่ นอกจากนี้ยังอำนวยความสะดวกในการจัดเก็บองค์ประกอบที่เกิดจากการรวมกันของคีย์-ค่าและค่าที่แมปในลำดับเฉพาะ ในคอนเทนเนอร์แบบหลายแผนที่ อาจมีองค์ประกอบหลายรายการที่เชื่อมโยงกับคีย์เดียวกัน ข้อมูลจะถูกจัดเรียงภายในเสมอโดยใช้คีย์ที่เกี่ยวข้อง

มัลติแมป::get_allocator() คืออะไร

ฟังก์ชัน multimap::get_allocator() เป็นฟังก์ชัน inbuilt ใน C++ STL ซึ่งกำหนดไว้ในไฟล์ส่วนหัว get_allocator() ใช้เพื่อจัดสรรส่วนหน่วยความจำให้กับคอนเทนเนอร์แบบหลายแมป ฟังก์ชันนี้จะคืนค่าสำเนาของอ็อบเจ็กต์ allocator ของคอนเทนเนอร์ที่เกี่ยวข้อง

ตัวจัดสรรคืออ็อบเจ็กต์ที่รับผิดชอบการจัดสรรหน่วยความจำแบบไดนามิกของคอนเทนเนอร์

ไวยากรณ์

multi_name.get_allocator();

พารามิเตอร์

ฟังก์ชันไม่รับพารามิเตอร์

คืนค่า

ฟังก์ชันนี้จะคืนค่าตัวจัดสรรของคอนเทนเนอร์ที่เกี่ยวข้อง

ป้อนข้อมูล

int *Ptr;
std::multimap<int> newmap;
newmap.insert(make_pair(‘A’, 22));
newmap.insert(make_pair(‘B’, 78));
newmap.insert(make_pair(‘C’, 66));
newmap.insert(make_pair(‘D’, 81));
Ptr = mymap.get_allocator().allocate(4);

ผลผลิต

ptr = A:22 B:78 C:66 D:81

ตัวอย่าง

#include <iostream>
#include <map>
using namespace std;
int main(){
   int arrsize;
   multimap<char, int> mul;
   pair<const char, int>* pr;
   pr = mul.get_allocator().allocate(15);
   // assign some values to array
   arrsize = sizeof(multimap<char, int>::value_type) * 10;
   cout << "Size of the allocated array is: "<< arrsize << " bytes.\n";
   mul.get_allocator().deallocate(pr, 5);
   return 0;
}

ผลลัพธ์

ถ้าเรารันโค้ดด้านบน มันจะสร้างผลลัพธ์ต่อไปนี้ -

Size of the allocated array is: 80 bytes.

ตัวอย่าง

#include <iostream>
#include <map>
using namespace std;
int main(){
   int arrsize;
   multimap<char, int> mul;
   pair<const char, int>* pr;
   pr = mul.get_allocator().allocate(2);
   // assign some values to array
   arrsize = sizeof(multimap<char, int>::value_type) * 5;
   cout << "Size of the allocated array is: "<< arrsize << " bytes.\n";
   mul.get_allocator().deallocate(pr, 5);
   return 0;
}

ผลลัพธ์

ถ้าเรารันโค้ดด้านบน มันจะสร้างผลลัพธ์ต่อไปนี้ -

Size of the allocated array is: 40 bytes.