📜  C++ STL-Multiset.get_allocator()函数(1)

📅  最后修改于: 2023-12-03 14:59:46.041000             🧑  作者: Mango

C++ STL-Multiset.get_allocator()函数

简介

std::multiset 是一个关联式容器,其中的元素按其值自动排序,允许多个元素具有等价的值。

get_allocator() 函数用来返回当前 multiset 容器所使用的内存分配器的对象属性。

函数原型
allocator_type get_allocator() const; //返回当前 multiset 容器所使用的内存分配器的对象属性。
函数参数

该函数没有参数。

返回值

该函数返回当前 multiset 容器所使用的内存分配器的对象属性,即类型为 std::allocator 的默认内存分配器对象。

示例代码
#include <iostream>
#include <set>

int main()
{
    std::multiset<int> myset = { 5, 2, 9, 1, 5 };

    // 获取 multiset 的内存分配器对象属性
    std::allocator<int> alloc = myset.get_allocator();

    // 分配存储为 5 个 int 类型的数组,且值均为 0
    int* data = alloc.allocate(5);

    // 在分配的存储空间中构造值
    std::uninitialized_fill(data, data + 5, 0);

    // 打印数组中的值
    for (int i = 0; i < 5; i++)
    {
        std::cout << data[i] << " ";
    }

    // 析构分配的存储空间中的值
    std::destroy(data, data + 5);

    // 释放分配的存储空间
    alloc.deallocate(data, 5);

    return 0;
}
注意事项

get_allocator() 函数只能返会当前 multiset 容器所使用的内存分配器的对象属性,一旦容器对象的内存分配器属性变化后,该函数返回值也将相应地发生变化。

由于 multise 的内存分配器可以通过模板参数指定,也可以通过修改默认模板参数来进行修改,所以在使用 get_allocator() 函数时要注意是否需要指定合适的模板参数。

参考资料