【C++修行之道】STL(初识list、stack)

慈云数据 2024-03-20 技术支持 48 0

目录

一、list

1.1list的定义和结构

以下是一个示例,展示如何使用list容器:

1.2list的常用函数

1.3list代码示例

二、stack

2.1stack的定义和结构

stack的常用定义

2.2常用函数

2.3stack代码示例


一、list

1.1list的定义和结构

  • list的使用频率不高,在做题时极少遇到需要使用list的情景。
  • ist是一种双向链表容器,它是标准模板库(STL)提供的一种序列容器。
  • list容器以节点(node)的形式存储元素,并使用指针将这些节点链接在一起,形成一个链表结构。
  • list容器的定义和结构如下:
    template class list;

    list容器模板接受两个参数:

    1. T:指定容器中存储的元素类。
    2. Allocator (可选):指定用于分配内存的分配器类型,默认为std::allocator。

    list容器的特点包括:

    • 双向性:每个节点都包含指向前一个节点和后一个节点的指针,因此可以在常数时间内在链表中的任意位置进行插入、删除和访问操作
    • 动态大小: 链表的大小可以根居需要动态扩展或收缩,不需要预先指定容器的大小
    • 不连续存储:链表中的节点可以在内存中的任意位置分布,不要求连续存储因此插入和删除操作不会导致元素的移动。
    • list与其他标准序列容器(array,vector和deque)相比,list通常可以在容器内的任何位置插入、提取和移动元素。
    • list与其他标准序列容器(array,vector和deque)相比,list和forward_list(单链表实现)的主要缺点是他们不能通过位置直接访问元素;例如,要访问列表中的第五个元素,必须从已知位置(开始或结束)迭代到该位置,需要线性时间开销。
    • 存储密度低,list要使用一些额外的内容空间(next,prev)来保持与每个元素相关联(前后续的线性)的链接信息,从而导致存储小元素类型(如char,short,int等)的列表的存储密度低。

      list容器提供了一系列成员函数和迭代器来操作和访问链表中的元素,包括插入、删除、访问、反转等操作。可以使用迭代器来遍历链表中的元素。

      以下是一个示例,展示如何使用list容器:

      #include
      #include
      using namespace std;
      int main()
      {
      	list myList;
      	//在链表尾部插入元素
      	myList.push_back(1);
      	myList.push_back(2);
      	myList.push_back(3);
      	//在链表头不插入元素
      	myList.push_front(0);
      	//遍历链表并输出元素
      	for (int num : myList) {
      		cout 
微信扫一扫加客服

微信扫一扫加客服

点击启动AI问答
Draggable Icon