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 ..
廣告