Computer >> Hướng Dẫn 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 hoạt động, cú pháp và các ví dụ của hàm multimap::get_allocator() trong C++ STL.

Multimap trong C++ STL là gì?

Multimap là container liên kết, tương tự như map. Nó lưu trữ các phần tử dạng cặp key-value theo thứ tự cụ thể. Multimap cho phép nhiều phần tử có cùng một key. Dữ liệu luôn được sắp xếp theo key.

Hàm multimap::get_allocator() là gì?

multimap::get_allocator() là hàm built-in trong C++ STL, được định nghĩa trong header <map>. Hàm này trả về một bản sao của đối tượng allocator (bộ phân phối bộ nhớ) của container multimap liên kết.

Allocator là đối tượng chịu trách nhiệm cấp phát bộ nhớ động cho container.

Cú pháp

multi_name.get_allocator();

Tham số

Hàm này không nhận tham số nào.

Giá trị trả về

Trả về allocator của container liên kết.

Ví dụ minh họa 1

#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);
    
    // Gán giá trị cho mảng
    arrsize = sizeof(multimap<char, int>::value_type) * 10;
    cout << "Kích thước mảng đã cấp phát: " << arrsize << " bytes.\n";
    
    mul.get_allocator().deallocate(pr, 5);
    return 0;
}

Kết quả

Kích thước mảng đã cấp phát: 80 bytes.

Ví dụ minh họa 2

#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);
    
    arrsize = sizeof(multimap<char, int>::value_type) * 5;
    cout << "Kích thước mảng đã cấp phát: " << arrsize << " bytes.\n";
    
    mul.get_allocator().deallocate(pr, 5);
    return 0;
}

Kết quả

Kích thước mảng đã cấp phát: 40 bytes.