STL--list如何实现元素的插入和删除

这篇具有很好参考价值的文章主要介绍了STL--list如何实现元素的插入和删除。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

STL--list如何实现元素的插入和删除,C++学习,C++STL标准库,c++,list,开发语言


在C++标准模板库(STL)中,std::list 是一个双向链表。由于它的双向链表特性,std::list 支持在任何位置高效地插入和删除元素。
元素插入:
●使用 push_back() 在列表尾部添加元素;
●使用 push_front() 在列表头部添加元素;
●使用 insert() 在指定位置插入元素。这需要一个迭代器指向插入点,插入操作之后迭代器将指向新插入的元素。
元素删除:
●使用 pop_back() 删除列表尾部元素;
●使用 pop_front() 删除列表头部元素;
●使用 erase() 删除指定位置的元素。这同样需要一个迭代器指向要删除的元素;
●使用 remove() 删除所有与指定值相等的元素。
由于链表的每个元素都是独立的节点,插入或删除操作不需要移动其它元素,因此这些操作通常都是常数时间复杂度(O(1)),这也是链表结构的优点之一。
示例应用场景:
●当实现一个任务队列,且任务有不同的优先级时,可以使用 insert() 将高优先级的任务插入到适当的位置。
●在游戏开发中,可能需要管理多个动态生成和销毁的对象,使用 std::list 可以有效地插入和删除这些对象。
示例代码:
 

#include <list>
#include <iostream>

int main() {
    std::list<int> mylist;

    // 在列表末尾插入元素
    mylist.push_back(1);
    mylist.push_back(2);
    mylist.push_back(3);

    // 在列表头部插入元素
    mylist.push_front(0);

    // 在第二个元素之后插入一个元素
    auto it = mylist.begin();
    std::advance(it, 2);
    mylist.insert(it, 5);

    // 删除第二个元素
    it = mylist.begin();
    std::advance(it, 1);
    mylist.erase(it);

    // 删除所有值为3的元素
    mylist.remove(3);

    // 打印列表的元素
    for (int n : mylist) {
        std::cout << n << '\n'; // 应该打印出 0, 1, 5
    }

    return 0;
}

在这段代码中,我们首先在 std::list 的头部和尾部插入了元素,然后找到了第二个元素的位置并在其后插入了一个新元素,接着删除了特定位置的元素,最后删除了所有值为3的元素。


本篇完!文章来源地址https://www.toymoban.com/news/detail-848911.html

到了这里,关于STL--list如何实现元素的插入和删除的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++——STL标准模板库——容器详解——list

    list:双向链表。list是一种分布式存储的线性表,每个节点分为数据域和指针域,其中指针域中包含一个指向前驱节点的指针和一个指向后续节点的指针,基本模型如下: 1、双向链表:每个元素都有一个前驱和一个后继,这种结构允许在链表的任何位置实现快速的插入和删除

    2024年01月16日
    浏览(47)
  • 【C++STL标准库】序列容器之deuqe与、orwa_list与list

    基本概念这里就不再浪费时间去解释,这里给出deuqe与、orwa_list、list的基本使用方法: deque队列: forward_list单向列表: list双向链表: 如果发现文章中有错误,还请大家指出来,我会非常虚心地学习,我们一起进步!!!

    2024年02月15日
    浏览(41)
  • O(1)插入、删除和随机元素[中等]

    优质博文:IT-BLOG-CN 实现 RandomizedSet 类: 【1】 RandomizedSet() 初始化 RandomizedSet 对象。 【2】 bool insert(int val) 当元素 val 不存在时,向集合中插入该项,并返回 true ;否则,返回 false 。 【3】 bool remove(int val) 当元素 val 存在时,从集合中移除该项,并返回 true ;否则,返回 fal

    2024年01月19日
    浏览(34)
  • java List 删除 元素

    1.for循环倒序删除 2.迭代器删除 3.lamda stream流过滤

    2024年02月15日
    浏览(45)
  • python 一次性删除列表(list)的空白元素(空内容) 或者 一次性删除列表(list)中的指定元素

    看看下述代码: 输出: 当你遇见这种情况,有哪些方法来去除里面的空内容呢(即 \\\'\\\' )? 1.1 删除空内容(方法一) : 输出: 1.2 删除空内容(方法二) : 需要 配合 lambda 表达式 一起使用! 输出: 2.3 删除指定内容 : 输出: 注 :此方法既可以删除空元素,也可以删除指

    2024年02月03日
    浏览(94)
  • Java 中 List 删除元素

    删除某个元素后,list的大小发生了变化,会导致遍历准确。 这种方式可以用在删除特定的一个元素时使用,但不适合循环删除多个元素时使用 删除元素后继续循环会报错误信息 ConcurrentModificationException ,但是删除完毕马上使用break跳出,则不会触发报错。 iterator遍历过程中

    2024年02月09日
    浏览(42)
  • Java list安全删除元素详解

    前一段时间被问到了关于 List 集合的安全删除元素问题。一时间没反应过来这问题问的是什么,安全体现在什么地方,线程安全?线程安全可以保证元素粒度的数据唯一吗?删除是指什么,list.remove()? 带着这些疑问,重温了一下Java的集合知识。 List为什么需要安全移除? 我

    2024年02月09日
    浏览(43)
  • Java List循环安全删除元素

    Java List循环安全删除元素的几种方式如下: 使用迭代器(Iterator):通过调用List的iterator()方法获取List的迭代器,然后使用迭代器的remove()方法删除元素。这种方式可以避免在遍历过程中修改List导致的并发修改异常(ConcurrentModificationException)。 示例代码: 使用Java 8的Stream

    2024年02月11日
    浏览(40)
  • list删除重复元素几种思路

    distinct()是Java 8 中 Stream 提供的方法,返回的是由该流中不同元素组成的流。distinct()使用 hashCode() 和 eqauls() 方法来获取不同的元素。 因此,需要去重的类必须实现 hashCode() 和 equals() 方法。换句话讲,我们可以通过重写定制的 hashCode() 和 equals() 方法来达到某些特殊需求的去重

    2024年02月14日
    浏览(41)
  • 8 种循环删除 List 元素的方法:

    public ListString list = Arrays.asList(\\\"张三\\\", \\\"李四\\\", \\\"王五\\\", \\\"老六\\\", \\\"李东\\\", \\\"李想\\\", \\\"苟八\\\"); 普通 for 循环删除(不可靠) 普通 for 循环提取变量删除(抛异常) 普通 for 循环倒序删除(可靠) public void remove() {     ListString list = new ArrayList(initList);     for (int i = li

    2024年01月20日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包