简记特定容器list和forward_list算法
时间:2022-07-22
本文章向大家介绍简记特定容器list和forward_list算法,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
链表类型list和forward_list有独有的sort、merge、remove、reverse和unique,而通用版本的是不能用于这两个类型的,因为所要求的迭代器不同,通用版本需要迭代器支持更多的操作。
除了revrese不需要参数,其他都可以传递一个谓词。
splice是链表类型所独有的算法,且没有通用版本。
#include<bits/stdc++.h>
using namespace std;
int main(void) {
list<int>n1{ 1,2,3,4,5,6,7 }, n2{ 11,22,33 };
forward_list<int>n3{ 1,2,3,4,5,6,7 },n4{ 11,22,33 };
auto pi = n1.begin(),pi2=n2.begin(),pi3=n2.end();
auto pj = n3.begin(),pj2=n4.begin(),pj3=n4.end();
n1.splice(pi,n2); //将n2中的元素放到pi之前的位置
n3.splice_after(pj, n4); //将n4中的元素放到pj之后的位置
for (auto i : n1)cout << i << " "; cout << endl;
for (auto i : n3)cout << i << " "; cout << endl;
return 0;
}
输出为
11 22 33 1 2 3 4 5 6 7
1 11 22 33 2 3 4 5 6 7
list和forward_list都有三个版本的splice
n1.splice(pi,n2); //将n2中的元素放到pi之前的位置,此时两个链表可以不同
n1.splice(pi,n2,pi2); //将n2中pi2指向的元素放到pi之前的位置,pi2必须是一个指向n2的有效迭代器,此时两个链表可以相同
n1.splice(pi,n2,pi2,pi3); //将n2中[pi2,pi3)范围中的元素放到pi之前的位置,此时两个链表可以相同,但是pi不能指向范围中的元素
n3.splice_after(pj, n4); //将n4中的元素放到pj之后的位置
n3.splice_after(pj, n4,pj2); //将n4中的pj2指向的元素放到pj之后的位置,pj2必须是一个指向n4的有效迭代器,此时两个链表可以相同
n3.splice_after(pj, n4,pj2,pj3); //将n4中(pj2,pj3)范围中的元素放到pj之前的位置,此时两个链表可以相同,但是pj不能指向范围中的元素
对于上面第二个版本的splice输出如下
11 1 2 3 4 5 6 7
1 22 2 3 4 5 6 7
对于上面第三个版本的splice输出如下
11 22 33 1 2 3 4 5 6 7 //list是[pi2,pi3)
1 22 33 2 3 4 5 6 7 //forward_list是(pj2,pj3)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- (力扣)面试题56 - I. 数组中数字出现的次数
- 玩转 Java8 中的 Stream 之从零认识 Stream
- 聊聊dubbo-go的DubboInvoker
- 剑指Offer 面试题03. 数组中重复的数字
- SDAccel矩阵乘法优化(一)
- 花式玩 Spring Security ,这样的用户定义方式你可能没见过!
- 一文胜千言的DHCP的讲解以及DHCP服务器的配置
- 小知识 词云制作
- 解决 Error starting userland proxy: listen tcp 0.0.0.0:6379: bind: address already in use
- Qt官方示例-菜单栏
- 解决SpringBoot集成支付宝支付中文订单描述验签错误问题
- Linux挂载
- 一些字符处理函数
- SDAccel矩阵乘法优化(二)
- SDAccel矩阵乘法优化(三)