Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >list的splice方法[通俗易懂]

list的splice方法[通俗易懂]

作者头像
全栈程序员站长
发布于 2022-11-08 08:20:54
发布于 2022-11-08 08:20:54
1.3K00
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <iostream>
#include <list>

using namespace std;

int main ()
{
  std::list<int> mylist1, mylist2;
  std::list<int>::iterator it;

  // set some initial values:
  for (int i=1; i<=4; ++i)
     mylist1.push_back(i);     
     
  cout << "mylist1 contains:"; 
  for (it=mylist1.begin(); it!=mylist1.end(); ++it)
    cout << ' ' << *it;
  cout << endl;  // mylist1: 1 2 3 4

  for (int i=1; i<=3; ++i)
     mylist2.push_back(i*10);  
     
  cout << "mylist2 contains:";
  for (it=mylist2.begin(); it!=mylist2.end(); ++it)
    cout << ' ' << *it;
  cout <<endl; // mylist2: 10 20 30

  it = mylist1.begin();
  ++it; 
  cout<<"it: "<<*it<<endl;    // points to 2

  mylist1.splice (it, mylist2); //第一种用法,list1调用splice方法,将list2中的元素插入到it前面,清空list2链表元素 
  								// mylist1: 1 10 20 30 2 3 4
                                // mylist2 (empty)
                                // "it" still points to 2 (the 5th element)
  cout<<"it: "<<*it<<endl;    // points to 2
  /*cout << "mylist1 contains:";
  for (it=mylist1.begin(); it!=mylist1.end(); ++it)
    cout << ' ' << *it;
  cout << endl;

  cout << "mylist2 contains:";
  for (it=mylist2.begin(); it!=mylist2.end(); ++it)
    cout << ' ' << *it;
  cout << endl;*///这个遍历改变了it所指的值 
  
  mylist2.splice (mylist2.begin(),mylist1, it);//第二种用法,list2调用splice方法,将list1中的单个元素插入到list2位置的前面 
                                // mylist1: 1 10 20 30 3 4
                                // mylist2: 2
                                // "it" is now invalid.
  it = mylist1.begin();
  advance(it,3);           // 迭代器递增函数,"it" points now to 30

  mylist1.splice ( mylist1.begin(), mylist1, it, mylist1.end());//第三种用法,list1调用splice方法,将list1的it位置到end位置插入到list1的begin前面 
                                // mylist1: 30 3 4 1 10 20

  cout << "mylist1 contains:";
  for (it=mylist1.begin(); it!=mylist1.end(); ++it)
    cout << ' ' << *it;
  cout << endl;

  cout << "mylist2 contains:";
  for (it=mylist2.begin(); it!=mylist2.end(); ++it)
    cout << ' ' << *it;
  cout << endl;

  return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月24日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
C++(STL):13--- list插入和访问元素
前面章节介绍了如何创建 list 容器,在此基础上,本节继续讲解如何向现有 list 容器中添加或插入新的元素。 list 模板类中,与“添加或插入新元素”相关的成员方法有如下几个:
用户3479834
2021/02/03
2.5K0
C++ —— 关于list
cplusplus.com/reference/list/list/?kw=list
迷迭所归处
2024/11/19
750
C++ —— 关于list
C++ 序列式容器总结
C++ STL 是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法,关于 STL 呢,下面通过一个系统框图来对其进行一个总结:
wenzid
2021/09/08
1.1K0
探索C/C++的奥秘之list
list和我们之前讲的东西都一样,list第二个参数是一个空间配置器,是一个内存池, 底层是一个带头双向循环列表。list可以重载[],但是效率太低了。
用户11290648
2024/11/21
690
探索C/C++的奥秘之list
C++ list容器的splice方法
list容器底层实现是一个带头结点的双向链表,由于链表的每个节点是单独开辟的,所以链表在移动数据,或者两个链表之间移动数据的时候,直接把节点摘下来,接入到新的位置就可以了,效率比较高。 splice方法就是将list的元素进行拼接,原理就是改变结点指针的指向,效率比较高。
全栈程序员站长
2022/11/08
1.2K0
C++ list容器的splice方法
【C++篇】从基础到进阶:全面掌握C++ List容器的使用
list 是 C++ 标准模板库 (STL) 中提供的一种顺序容器。它使用 双向链表 作为底层实现,与 vector 等连续存储的容器不同,list 提供了一种非连续的存储方式,适用于插入和删除操作频繁的场景。
熬夜学编程的小王
2024/11/25
5580
【C++篇】从基础到进阶:全面掌握C++ List容器的使用
【C++】list使用详解
https://legacy.cplusplus.com/reference/list/list/
羚羊角
2024/11/21
1420
【C++】list使用详解
C++奇迹之旅:双向链表容器list的灵活使用技巧
std::list 是 C++ 标准库中的一个序列容器,它实现了双向链表(doubly linked list)。
学习起来吧
2024/08/29
2190
C++奇迹之旅:双向链表容器list的灵活使用技巧
【深入探索 C++ STL 容器 list】 —— 编程世界的万能胶,数据结构中的百变精灵
cplusplus.com/reference/list/list/?kw=list
换一颗红豆
2024/12/20
1550
【深入探索 C++ STL 容器 list】 —— 编程世界的万能胶,数据结构中的百变精灵
深入探索 C++ STL: 高效双向链表 list 的使用与实践
C++ STL(Standard Template Library)的 list 容器是双向链表的实现,适合需要频繁插入和删除元素的场景。在这篇文章中,我将详细介绍 list 的特性、使用场景、常见的操作和使用示例,帮助读者全面掌握 list 的用法。本文分为以下几部分:
用户11286421
2024/10/20
2240
【c++】探究C++中的list:精彩的接口与仿真实现解密
每个构造函数都有它们独特的用途,可以根据具体需要选择合适的构造函数进行对象的创建和初始化。
用户11029103
2024/04/25
2600
【c++】探究C++中的list:精彩的接口与仿真实现解密
深入探讨C++中的双向链表:构建高效数据结构的关键方法与实用技巧(上)
std::list容器,顾名思义,实现了双向链表的数据结构。与基于数组的容器(如std::vector)不同,std::list中的元素并不是连续存储在内存中的,而是通过节点(Node)之间的指针相互连接。这种设计赋予了std::list在插入和删除操作上的巨大优势——无论元素位于何处,这些操作都可以在常数时间复杂度O(1)内完成,而无需像数组那样可能需要移动大量元素。
suye
2024/10/16
2980
C++ STL源码剖析之双向环形链表list
双向环状链表从节点值为3开始插入,红色框表示最后一个节点(end()指向的节点)。黄色线条表示指向前驱节点,黑色线条表示指向后继节点。
公众号guangcity
2019/10/09
1.7K0
当 push 成为一场冒险:走进 C++ List 的世界
在 C++ 的标准库中,push_back 和 emplace_back 都是用于向容器(如 std::vector)的末尾添加元素的操作,但它们在功能和性能上有一些细微的区别:
Undoom
2024/11/21
1950
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——7.list(无习题)
list 是 C++ 标准模板库 (STL) 中的一种容器类型,采用双向链表的数据结构来存储数据。双向链表意味着每个节点包含一个数据元素和两个指针,分别指向前一个和后一个节点。list 适用于需要频繁进行插入和删除操作的场景,其效率比动态数组(如 vector)更高,但不支持随机访问。与 vector 使用连续内存存储不同,list 的节点在内存中并不连续存储。
hope kc
2024/10/17
2080
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——7.list(无习题)
c++ list, vector, map, set 区别与用法比较
List封装了链表,Vector封装了数组, list和vector得最主要的区别在于vector使用连续内存存储的,他支持[]运算符,而list是以链表形式实现的,不支持[]。 Vector对于随机访问的速度很快,但是对于插入尤其是在头部插入元素速度很慢,在尾部插入速度很快。List对于随机访问速度慢得多,因为可能要遍历整个链表才能做到,但是对于插入就快的多了,不需要拷贝和移动数据,只需要改变指针的指向就可以了。另外对于新添加的元素,Vector有一套算法,而List可以任意加入。 Map,Set属于标准
hbbliyong
2018/03/06
10.3K0
c++ list, vector, map, set 区别与用法比较
【c++】标准模板库STL入门简介与常见用法
STL(Standard Template Library)标准模板库,主要由容器、迭代器、算法、函数对象、内存分配器和适配器六大部分组成。STL已是标准C++的一部分,使用STL开发系统可以提高开发效率。
马三小伙儿
2018/09/12
7970
c语言list嵌套遍历「建议收藏」
大家好,又见面了,我是你们的朋友全栈君。list<string>::iterator itor; //定义迭代器 list<string> myList1; list<string> myList2; list<list<string>> bigList; myList1.push_back(“88”); myList1.push_back(“99”);
全栈程序员站长
2022/09/14
1.1K0
【C++修行之道】STL(初识list、stack)
list容器提供了一系列成员函数和迭代器来操作和访问链表中的元素,包括插入、删除、访问、反转等操作。可以使用迭代器来遍历链表中的元素。
走在努力路上的自己
2024/01/28
2800
【C++修行之道】STL(初识list、stack)
STL容器的线程安全性了解多少?
STL的意思是与迭代器合作的C++标准库的一部分,包括标准容器(包括string),iostream库的一部分,函数对象和算法,它不包括标准容器适配器(stack,queue和priority_queue)以及bitset和valarray容器,因为它们缺乏迭代器的支持,也不包括数组。数组以指针的形式支持迭代器,但数组是C++语言的一部分,并非库。
用户9831583
2022/12/04
1.7K0
推荐阅读
相关推荐
C++(STL):13--- list插入和访问元素
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验