📅  最后修改于: 2023-12-03 14:59:46.041000             🧑  作者: Mango
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()
函数时要注意是否需要指定合适的模板参数。