Computer >> Máy Tính >  >> Lập trình >> C ++

hàm multimap get_allocator () trong C ++ STL

Trong bài viết này, chúng ta sẽ thảo luận về cách làm việc, cú pháp và ví dụ của hàm multimap ::get_allocator () trong C ++ STL.

Multimap trong C ++ STL là gì?

Multimaps là các vùng chứa kết hợp, tương tự như vùng chứa bản đồ. Nó cũng tạo điều kiện để lưu trữ các phần tử được hình thành bởi sự kết hợp của khóa-giá trị và giá trị được ánh xạ theo một thứ tự cụ thể. Trong một vùng chứa nhiều bản đồ có thể có nhiều phần tử được liên kết với cùng một khóa. Dữ liệu luôn được sắp xếp nội bộ với sự trợ giúp của các khóa liên quan.

Multimap ::get_allocator () là gì?

Hàm multimap ::get_allocator () là một hàm có sẵn trong C ++ STL, được định nghĩa trong tệp tiêu đề . get_allocator () được sử dụng để cấp phát các phần bộ nhớ cho một vùng chứa nhiều bản đồ. Hàm này trả về một bản sao của đối tượng cấp phát của vùng chứa được liên kết với nó.

Bộ cấp phát là một đối tượng chịu trách nhiệm cấp phát bộ nhớ động cho vùng chứa.

Cú pháp

multi_name.get_allocator();

Tham số

Hàm không chấp nhận tham số.

Giá trị trả về

Hàm này trả về trình cấp phát của vùng chứa được liên kết.

Đầu vào

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);

Đầu ra

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

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Size of the allocated array is: 80 bytes.

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Size of the allocated array is: 40 bytes.