• C++——如何正确的使用STL中list?


    正确认识list

    STL(Standard Template Library)是C++中的一个重要库,它提供了一组通用的模板类和函数,用于实现常用的数据结构和算法。其中,STL list是STL库中的一个双向链表容器类。

    list是一个线性顺序容器,它以节点的形式存储元素,每个节点都包含一个值和指向前一个节点和后一个节点的指针。与数组和向量(vector)不同,list的插入和删除操作复杂度为O(1),不受容器大小的影响。然而,由于没有随机访问的能力,访问和遍历list的操作复杂度为O(n)。

    总之,STL list是一个灵活、高效的双向链表容器,适用于需要频繁插入和删除元素的场景,提供了一系列方便的操作函数和迭代器,方便使用者进行元素的管理和操作。

    list的优缺点

    1. list的底层采用的是双向链表结构,可以通过节点找到前一个元素和后一个元素
    2. 和其他容器相比,list的插入删除效率更好
    3. list不支持随机访问,只能从头部或者尾部迭代到该位置
    4. list可以在任意位置进行插入删除

    list的常用接口

    list的构造

    构造函数(constructor)接口说明
    list(size_type n,const value_type& val=value_type())构造的list中包含n个值为val的元素
    list()构造空的list
    list(const list&x)构造拷贝函数
    list(InputIterator first,InputIterator last)用(first,last)区间中的元素构造list

    list iterator的使用

    函数声明接口说明
    begin+end返回第一个元素的迭代器+返回最后一个元素下一个位置的迭代器
    rbegin+rend返回第一个元素的reverse_iterator,即end位置,返回最后一个元素下一个位置的reverse_iterator,即begin位置

    在这里插入图片描述

    正、反向迭代器的区别:

    1. begin与end为正向迭代器,对迭代器执行++操作,迭代器向后移动
    2. rbegin与rend为反向迭代器,对迭代器执行++操作,迭代器向前移动
    3. 正向迭代器和反向迭代器对称

    list capacity

    函数声明接口说明
    empty检测list是否为空,是返回true,否返回false
    size返回list中有效节点的个数

    list element access

    函数声明接口说明
    front返回list的第一个节点中值的引用
    back返回list的最后一个节点中值的引用

    list modifiers

    函数声明接口说明
    push_front在list首元素前插入值为val的元素
    pop_front删除list中第一个元素
    push_back在list尾部插入值为val的元素
    pop_back删除list中最后一个元素
    insert在list position位置中插入值为val的元素
    erase删除list position位置的元素
    swap交换两个list中的元素
    clear清空list中的有效元素
  • 相关阅读:
    Java中的stream流[75]
    劲(很)霸(不)酷(好)炫(用)的NLP可视化包:Dodorio 使用指北
    目标检测论文解读复现之十一:基于特征融合与注意力的遥感图像小目标检测
    浅谈MySQL 索引
    NSX ALB + Harbor + OpenShift 4.8 UPI安装配置实验笔记系列目录
    洛谷P3469 [POI2008]BLO-Blockade(割点过程计算bcc)
    营收净利双降、市值蒸发50亿,莱克电气苦战双11
    Lucene中的Field域、索引维护、搜索、相关度排序和中文分词器讲解
    安卓应用 .9.png类型启动图/背景图
    YoloV1~YoloV4
  • 原文地址:https://blog.csdn.net/weixin_51799303/article/details/133282422