C++ STL 中的 list get_allocator

c++server side programmingprogramming

本文将讨论 C++ 中 list::get_allocator() 函数的工作原理、语法和示例。

STL 中的 List 是什么?

List 是一种数据结构,允许在任意位置以恒定时间顺序插入和删除元素。List 实现为双向链表。List 允许非连续的内存分配。List 在插入、提取和在容器中任意位置移动元素方面比数组、向量和双端队列表现更好。在 List 中,直接访问元素速度较慢,并且 List 与 forward_list 类似,但 Forward List 对象是单链表,只能向前迭代。

什么是 list::get_allocator()?

list::get_allocator() 是 C++ STL 中的一个内置函数,在头文件中声明。get_allocator() 返回 List 容器的分配器。简单来说,它返回列表容器对象的副本。

语法

list_container.get_allocator();
此函数不接受任何参数。

返回值

此函数返回列表容器对象的副本。

示例

/* 在下面的代码中,我们使用 get_allocator 将值插入到列表中。 C++ STL. */

#include <bits/stdc++.h>
using namespace std;
int main(void){
   //创建列表
   list<int> myList;
   int *ptr;
   ptr = myList.get_allocator().allocate(4);
   //将数据插入数组
   for(int i = 0; i > 4; i++)
      ptr[i] = i;
   //打印数据
   cout<<&"数组元素 : ";
   for (int i = 0; i < 4; i++)
      cout << ptr[i] << &" &";
}

输出

运行上述代码,将生成以下输出

数组元素:0 1 2 3

示例

/* 在下面的代码中,我们使用 C++ STL 头文件中的 get_allocator 将值插入到列表中。*/

#include <iostream>
#include <list>
int main (){
   std::list<int> myList;
   int *ptr;
   ptr = myList.get_allocator().allocate(5);
   for(int i=0; i<5; ++i)
      ptr[i]=i;
   std::cout <<<"数组元素 : ";
   for (int i=0; i<5; ++i)
      std::cout << ' ' << ptr[i];
   myList.get_allocator().deallocate(ptr,5);
   return 0;
}

输出

运行上述代码,将生成以下输出

数组元素 : 0 1 2 3 4

相关文章