IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> C++ list::splice()函数 -> 正文阅读

[数据结构与算法]C++ list::splice()函数

一、定义

list::splice实现list拼接的功能。将源list的内容部分或全部元素删除,拼插入到目的list。

函数有以下三种声明:

void list::splice( iterator pos, list rhs );
void list::splice( iterator pos, list rhs, iterator ix );
void list::splice( iterator pos, list rhs, iterator first, iterator last );

splice()把一个或一级元素从一个 list 移到另一个中去 它有三种形式

1、从positon开始,把一个 list 的全部元素搬移到另一个中去

2、从positon开始,把一个 list 中包含的一组元素搬移到另一个中去

3、从positon开始,把first 到 last 剪接到要操作的list对象中

二、实例

1、使用第一种声明,将list2的元素全部剪切到list1的第一个元素后面,然后list2中没有元素

 int main()
 {
	 list<int>li1{ 1,2,3,4 };
	 list<int>li2{ 11,12,13,14 };

	 list<int>::iterator it = li1.begin();
	 it++; // 插入到第一个元素后面

	 li1.splice(it, li2);
	 if (li2.empty()) {
		 cout << "li2 is empty" << endl;
	 }
	 else
	 {
		 cout << "li2 is  not empty" << endl;
	 }

	 cout << "li1 is" << endl;
	 for (list<int>::iterator item = li1.begin(); item != li1.end(); ++item) {
		 cout << *item << " ";
	 }
     return 0;

}

运行结果

?2、使用第二种声明, 把list1中包含的一个元素剪切到list2中去

int main()
{
    list<int>li1{ 1,2,3,4 };
    list<int>li2{ 11,12,13,14 };

    list<int>::iterator it = li1.begin();
    it++;

    li2.splice(li2.begin(), li1, it); // 把元素2插入到list2的第一个元素的位置上
    cout << "li1 is" << endl;
    for (list<int>::iterator item = li1.begin(); item != li1.end(); ++item) {
        cout << *item << " ";
    }

    cout << endl;
    cout << "li2 is" << endl;
    for (list<int>::iterator item = li2.begin(); item != li2.end(); ++item) {
        cout << *item << " ";
    }
    return 0;
}

运行结果

?3、使用第三种声明, 把list1中包含的一组元素剪切到list2中去

int main()
{
    list<int>li1{ 1,2,3,4 };
    list<int>li2{ 11,12,13,14 };
    auto it = li1.begin();
    advance(it, 2);//advance 的意思是增加的意思,就是相当于 it=it+2;这里指向3
    li1.splice(li1.begin(), li1, it, li1.end()); // 将3,4插入到1,2前面
    cout << "li1 is" << endl;
    for (list<int>::iterator item = li1.begin(); item != li1.end(); ++item) {
        cout << *item << " ";
    }

    li2.splice(li2.begin(), li1, li1.begin(), li1.end()); // 将list1插入到list2前面
    cout << endl;
    cout << "li2 is" << endl;
    for (list<int>::iterator item = li2.begin(); item != li2.end(); ++item) {
        cout << *item << " ";
    }
    return 0;
}

运行结果

?参考:

C++ list::splice()函数详解_【黑键】-CSDN博客_c++ splice

C++ list::splice()用法_陈显森的博客-CSDN博客_c++ list splice

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章           查看所有文章
加:2021-11-10 12:39:06  更:2021-11-10 12:41:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 10:23:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码