C++ List::get_allocator() 函数



C++ 的std::list::get_allocator()函数用于检索与列表关联的分配器。

在 C++ 中,分配器用于标准库来处理存储在容器中的元素的分配和释放。分配是请求访问数据集的过程。如果您分配一个存在的数据集,系统允许您打开数据集;如果您分配一个不存在的数据集,系统会在可用设备上为其创建空间,并允许您打开该空间。

语法

以下是 C++ std::list::get_allocator() 的语法:

allocator_type get_allocator() const;

参数

  • 它不接受任何参数。

返回值

此函数返回与列表关联的分配器。

示例 1

在下面的程序中,我们使用 C++ std::list::get_allocator() 函数来检索与当前列表 {10, 20, 30, 40, 50} 关联的分配器。

#include<iostream>
#include<list>
using namespace std;

int main(void) {
   //create a list
   list<int> num_list = {10, 20, 30, 40, 50};
   cout<<"List elements are: ";
   for(int i : num_list){
      cout<<i<<" ";
   }
   int *p = NULL;
   p = num_list.get_allocator().allocate(5);
   for (int i = 0; i<5; ++i)
      p[i] = i + 1;
   cout<<"\nList contains following elements"<<endl;
   for (int i = 0; i<5; ++i)
      cout<<p[i]<<" ";
   return 0;
}

输出

以下是上述程序的输出:

List elements are: 10 20 30 40 50 
List contains following elements
1 2 3 4 5

示例 2

以下是 C++ std::list::get_allocator() 函数的另一个示例。在这里,我们创建一个名为 num_list 的列表(int 类型)。然后,使用 get_allocator() 函数,我们尝试检索与当前列表关联的分配器。

#include<iostream>
#include<list>
using namespace std;

int main(void) {
   //create a list
   list<int> num_list;
   //creating array using this list get_allocator
   int *arr;
   arr = num_list.get_allocator().allocate(5);
   arr[0] = 10;
   arr[1] = 20;
   arr[2] = 30;
   arr[3] = 40;
   arr[4] = 50;
   cout<<"List contains the following elements: ";
   for(int i = 0; i<5; i++) {
      cout<<arr[i]<<" ";
   }
}

输出

这将生成以下输出:

List contains the following elements: 10 20 30 40 50 

示例 3

在此示例中,我们创建一个名为 char_list 的列表(char 类型),其值为 空。然后,使用 get_allocator() 函数,我们尝试获取与该列表关联的分配器。我们使用 allocate() 函数指定要分配的对象数量为 5,以便为指向附近内存位置的指针分配存储空间。

#include<iostream>
#include<list>
using namespace std;

int main(void) {
   //create a list
   list<char> char_list = {};
   cout<<"Size of list: "<<char_list.size()<<endl;
   //creating array using this list get_allocator
   char *char_arr;
   char_arr = char_list.get_allocator().allocate(3);
   char_arr[0] = 'a';
   char_arr[1] = 'b';
   char_arr[2] = 'c';
   cout<<"List contains the following elements: ";
   for(int i = 0; i<5; i++) {
      cout<<char_arr[i]<<" ";
   }
}

输出

执行上述程序后,将产生以下输出:

Size of list: 0
List contains the following elements: a b c ..
广告