因为 list 容器不支持随机访问 所以 merge() remove() reverse() sort()和 unique()泛型算法最好不要用在 list 对象上 尽管这些算法都没有显式地要求一个 RandomAccessIterator标准库为每个算法都提供了专门的 list 成员实例 比如专门为 list 的 splice()操作):

  • list::merge() 用第二个有序的 list 合并一个有序 list
  • list::remove() 删除等于某个值的元素
  • list::remove_if() 删除满足某个条件的元素
  • list::reverse() 将 list 中元素反向排列
  • list::sort() 排序 list 的元素
  • list::splice() 把一个 list 的元素移到另一个 list 中
  • list::unique() 删除某个元素的重复连续拷贝

list::splice()

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 移到另一个中去 它有三种形式 把一个 list 的全部元素搬移到另一个中去 把一个 list 中包含的一组元素搬移到另一个中去 以及把一个 list中的单个元素搬移到另一个中去 每种形式都给出了一个指出插入一个或一组元素的位置的iterator 例如 给出下列两个 list:

int array[ 10 ] = { 0, 1, 1, 2, 3, 5, 8, 13, 21, 34 };
list< int > ilist1( array, array + 10 );
list< int > ilist2( array, array+2 ); // 包含 0, 1

下面使用 splice()把 ilist1 的第一个元素移到 ilist2 中 现在 ilist2 包含元素 0 1 0 而ilist1 不再包含 0:

// ilist2.end() 指示要接合元素的位置
// 被接合的元素在该位置之前
// ilist1 指示从哪个 list 中移动元素
// ilist1.begin() 指示要被移动的元素
ilist2.splice( ilist2.end(), ilist1, ilist1.begin() )

在 splice()的下一个用法中 传递了两个 iterator 指示要移动元素的子范围:

list< int >::iterator first, last;
first = ilist1.find( 2 );
last = ilist1.find( 13 );
ilist2.splice( ilist2.begin(), ilist1, first, last );

在这种情况下 元素 2 3 5 和 8 被从 ilist1 移到 ilist2 的前部 现在 ilist1 含有五个元素 1 1 13 21 和 34 为了把剩下这些元素移到 ilist2 中 可以使用 splice()操符的最后一种形式

list< int >::iterator pos = ilist2.find( 5 );
ilist2.splice( pos, ilist1 );

现在 ilist1 是空的 剩下的五个元素被移到 ilist2 中 放在值为 5 的元素之前的位置

C++ list::splice()用法相关推荐

  1. Array.prototype.slice Array.prototype.splice 用法阐述

    目的 对于这两个数组操作接口,由于不理解, 往往被误用, 或者不知道如何使用.本文尝试给出容易理解的阐述. 数组 什么是数组? 数组是一个基本的数据结构, 是一个在内存中依照线性方式组织元素的方式, ...

  2. slice与splice用法

    最近工作的时候用到了slice,这时候我想起了splice,两者的具体用法总是搞混,这里记录一下~ 用于数组的时候slice()方法可从已有的数组中返回选定的元素,也就是在该方法中指定的元素.该方法不 ...

  3. splice方法_Array中splice用法

    splice() 方法向/从数组中添加/替换/删除项目,然后返回被删除的项目. 注释:该方法会改变原始数组. 返回值 由被删除的元素组成的一个数组. 如果只删除了一个元素,则返回只包含一个元素的数组. ...

  4. js splice()用法

    splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目. 注释:该方法会改变原始数组. 参数: index -- 必需.整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置. ...

  5. js中slice、splice用法与区别

    1.slice(start,end)(参数可选) slice() 方法返回一个从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新数组对象.原始数组不会被修改. var a = ['a', 'b ...

  6. JavaScript中数组的增删改查以及应用方式

    数组的增加方法 1.push()方法向数组中末尾添加一个元素,原数组改变 var arr=[1,2,3,4];var arr1=arr.push(6);console.log(arr);//打印出来是 ...

  7. js替换数组中字符串实例

    这个是替换数组中的一个对象字符串: 直接上代码: 1 var aaa=[ 2 {"name":"张珊","sex":"man&qu ...

  8. TypeScript Essential Notes 2 - ES6 Language Features

    syntactic suguar 语法糖 Default parameters Template strings use backtick symbol backtick 反引号 bracket 大括 ...

  9. vue首次赋值不触发watch及watch和computed的区别

    watch的使用 template中 <div>名字:{{name}},年龄:{{age}}</div> script中 export default {props: { na ...

最新文章

  1. 一文了解Python常见的序列化操作
  2. Unix 时间表示方式与windows时间表示方式相互转换的解决办法
  3. ocbase 数据库 蚂蚁_iOS - OC SQLite 数据库存储
  4. 前端学习(477):前端简介1
  5. cookie里面用到的关键字_晓龙吊打面试官系列:synchronized关键字入门(同步方法与同步代码块)...
  6. [Asp.Net] Form验证中 user.identity为false
  7. EASY CHM使用
  8. 计算机无法访问iTunes,iphone7无法连接itunes的解决方法步骤
  9. Java Base64 加密与解密
  10. Google File System谷歌文件系统基本简述
  11. 1-开发环境--android文件系统的结构
  12. uniapp 安卓证书生成
  13. react服务端渲染技术
  14. 全站开发-列表讲解、切片、内置方法、元组、字典
  15. libjpeg解码 jpeg文件
  16. RuntimeError: cannot release un-acquired lock
  17. STC89C52单片机实验 DAY1 LED模块
  18. 关于canvas画图,填充颜色,添加文字
  19. Spring Security:密码编码器PasswordEncoder介绍与Debug分析
  20. ListNameValuePair params = new ArrayListNameValuePair();

热门文章

  1. 常用的sql server 函数、存储过程、临时表总结
  2. Linux引导过程详解
  3. ASM上的备份集如何转移到文件系统中
  4. hash算法的介绍 【清晰易懂】
  5. 【转】HashTable 和 HashMap的区别
  6. 使用Pocsuite3
  7. [Python图像处理] 二十三.傅里叶变换之高通滤波和低通滤波
  8. 教小学妹学算法:诺基亚引出的动态规划问题
  9. Martix工作室考核题 —— 输出1000以内能被3整除,且个位数为6的所有整数。
  10. 百练2815 城堡问题