每日学习笔记:C++ STL 的forward_list

定义

特点

 

操作函数

 

 

元素查找、移除或安插

forward_list::emplace_after

arg...指的是元素构造函数的参数(0~N个)

#include <iostream>
#include <memory>
#include <list>
#include <forward_list>
using namespace std;class aaa
{
public:aaa() { c = 666;};aaa(int a, int b) {c = a + b;};friend std::ostream& operator << (std::ostream& o, const aaa& s) {o << s.c;return o;}private:int c;
};int main()
{forward_list<aaa> t1{ {1,1},{},{2,2} }; std::copy(t1.cbegin(), t1.cend(), std::ostream_iterator<aaa>(cout, " "));cout << endl;t1.emplace_after(t1.before_begin(), 6, 8);std::copy(t1.cbegin(), t1.cend(), std::ostream_iterator<aaa>(cout, " "));cout << endl;t1.emplace_after(t1.before_begin());std::copy(t1.cbegin(), t1.cend(), std::ostream_iterator<aaa>(cout, " "));cout << endl;forward_list<int> t{ 1,2,3 }; t.emplace_after(t.before_begin(), 55);std::copy(t.cbegin(), t.cend(), std::ostream_iterator<int>(cout, "-"));for (;;);
}

forward_list::splice_after

<C++标准库第二版>书中介绍了c.splice_after(pos,c2,c2pos)的定义【c2pos所指的下一个转移到pos所指的下一个】,但是示例代码却写成了

这个调用的参数顺序与函数定义的参数顺序并不一致,于是我专门验证了一下,发现这个写法的运行结果与按照函数定义的参数顺序t2.splice_after(pos2, t1, pos1);运行结果居然相同,甚至我改成了下面这样的调用,结果仍然相同

forward_list<int> t3; //定义一个空的forward_list
t3.splice_after(pos2, forward_list<int>(), pos1); //形参传入一个空的forward_list

细看了一下 splice_after函数实现发现,在没有开启DEBUG宏的情况下,其内部并没有操作形参传入的forward_list参数,而只是对迭代器pos2、pos1之右(后)所指内容进行了拼接。即常规的单向链表拼接的指针操作。

示例代码:

#include <iostream>
#include <forward_list>
using namespace std;int main()
{forward_list<int> t1{1,2,3,4,5};forward_list<int> t2{ 97,98,99};auto pos1 = t1.before_begin();for (auto pb1 = t1.begin(); pb1 != t1.end(); ++pb1,++pos1){if (*pb1 == 3){break;}}auto pos2 = t2.before_begin();for (auto pb2 = t2.begin(); pb2 != t2.end(); ++pb2, ++pos2){if (*pb2 == 99){break;}}t1.splice_after(pos2, t2, pos1);//t2.splice_after(pos2, t1, pos1);//forward_list<int> t3;//t3.splice_after(pos2, forward_list<int>(), pos1);//t2.splice_after(pos2, t1, t1.before_begin());//t2.splice_after(pos2, t1, t1.begin());for (;;);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/743663.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

海思3516将BT1120改BT656输出大小为720*576

sample_comm_vi.c结构体 VI_DEV_ATTR_S DEV_ATTR_BT656D1_1MUX VI_DEV_ATTR_S DEV_ATTR_BT656D1_1MUX {/* interface mode */VI_MODE_BT656,/* multiplex mode */VI_WORK_MODE_1Multiplex,/* r_mask g_mask b_mask*/{0xFF0000, 0x0},//掩码根据自己实际写/* progess…

基于YOLOv8深度学习的野外火焰烟雾检测系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标检测

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

如何有效避免团队内耗,提升团队整体效能

团队内耗是一个普遍存在的问题&#xff0c;它可能导致工作效率低下、沟通不畅、成员间的信任缺失&#xff0c;甚至可能导致整个团队的崩溃。 它可能源于成员间的误解、利益冲突&#xff0c;或是个人情绪的波动。 如何避免团队内耗&#xff0c;是每个团队管理者和成员都应该关…

新质生产力

新质生产力是以科技创新为引擎&#xff0c;以新产业为主导&#xff0c;以产业升级为方向&#xff0c;以提升核心竞争力为目标的生产力。它融合人工智能、大数据等数字技术&#xff0c;更强调内在的发展质量&#xff0c;旨在走出一条生产要素投入少、资源配置效率高、资源环境成…

java组合模式揭秘:如何构建可扩展的树形结构

组合模式&#xff08;Composite Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许将对象组合成树形结构以表示整体/部分层次结构。组合模式使得客户端可以统一对待单个对象和组合对象&#xff0c;从而使得客户端可以处理更复杂的结构。 组合模式的主要组成部分包括&…

在Linux/Ubuntu/Debian中测试USB驱动器(U盘)的速度

如果你想测试USB驱动器的速度&#xff0c;可以使用各种工具和命令来测量读写速度。 用于此目的的一个常用工具是“dd”。 以下是如何使用“dd”执行简单的速度测试&#xff1a; 测试写入速度&#xff1a; 打开终端。 使用以下命令将测试文件写入 USB 驱动器&#xff1a; dd i…

人工智能|机器学习——BIRCH聚类算法(层次聚类)

这里再来看看另外一种常见的聚类算法BIRCH。BIRCH算法比较适合于数据量大&#xff0c;类别数K也比较多的情况。它运行速度很快&#xff0c;只需要单遍扫描数据集就能进行聚类。 1.什么是流形学习 BIRCH的全称是利用层次方法的平衡迭代规约和聚类&#xff08;Balanced Iterative…

LeetCode 2789.合并后数组中的最大元素:贪心(倒序)

【LetMeFly】2789.合并后数组中的最大元素&#xff1a;贪心&#xff08;倒序&#xff09; 力扣题目链接&#xff1a;https://leetcode.cn/problems/largest-element-in-an-array-after-merge-operations/ 给你一个下标从 0 开始、由正整数组成的数组 nums 。 你可以在数组上…

selenium启用MS Edge浏览器/下载MS Edge WebDriver

Selenium 是一个用于自动化 web 浏览器的工具&#xff0c;可以用于测试 web 应用程序或执行特定 web 任务。要在 Python 中使用 Selenium 来控制 Edge 浏览器&#xff0c;您需要安装相应的 Selenium 包和 Edge 驱动程序&#xff0c;并编写相应的 Python 代码。# 创建 selenium …

Prompt Engineering(提示工程)

Prompt 工程简介 在近年来&#xff0c;大模型&#xff08;Large Model&#xff09;如GPT、BERT等在自然语言处理领域取得了巨大的成功。这些模型通过海量数据的训练&#xff0c;具备了强大的语言理解和生成能力。然而&#xff0c;要想充分发挥这些大模型的潜力&#xff0c;仅仅…

【计算机视觉】目标跟踪| 光流算法详细介绍|附代码

0、前言 在上篇文章中https://blog.csdn.net/Yaoyao2024/article/details/136625461?spm1001.2014.3001.5501&#xff0c;我们对目标跟踪任务和目标跟踪算法有了大致的了解。今天我们就来详细介绍一下其中的生成式算法的一种&#xff1a;光流法。 在介绍光流法之前&#xff…

SinoDB V16.8 版本新特性

1、Oracle兼容 兼容 with as 语法 兼容 insert all/first 语法 兼容 () 形式的左外连接和右外连接语法 兼容 ROLLUP/CUBE/GROUPING SETS 语法 兼容 create or replace view/trigger/procedure/function/index 语法 兼容 rename procedure/function 语法 2、新增功能 条…

IMX8MM -- Yocto构建遇见的错误及解决方法:

IMX8MM Yocto构建遇见的错误及解决方法&#xff1a; 1 bison-3.0.4 error2 Opencv BB_NO_NETWORK Error &#xff1a;3 Yocto构建时出现U-boot 问题4 Yocto构建时出现Linux kernel编译问题5 wayland-native6 cross-localedef-native7 wayland-protocols8 mesa 硬件&#xff1a;…

《BERT基础教程:Transformer大模型实战》读书笔记

概念 BERT&#xff0c;Bidirectional Encoder Representations from Transformers&#xff0c;多Transformer的双向编码器表示法。 RNN&#xff0c;recurrent neural network&#xff0c;循环神经网络。 LSTM&#xff0c;long short-term memory&#xff0c;长短期记忆网络。…

python类中的def __next__(self):有什么用

在Python中&#xff0c;__next__ 方法是一个特殊方法&#xff0c;它用于实现迭代器协议。当一个对象定义了 __next__ 方法时&#xff0c;这个对象就变成了一个迭代器。迭代器允许你在一个序列&#xff08;比如列表、元组或集合&#xff09;或其他可迭代对象上进行迭代&#xff…

Linux网络配置修改hosts映射文件关闭防火墙

Linux网络配置&系统管理 一、物理机、VMware软件、虚拟机之间的网络关系1.1 总体框架图1.2 为什么物理机、VM软件、客户机之间能够通信?1.3 查看客户机的IP地址ifconfig1.4 小节1.5 修改静态IP地址1.6 测试能不能ping通 二、修改主机名以及hosts映射文件2.1 修改主机名2.1…

机器视觉学习(二)—— 显示图像和视频

一、获取图像 要使用OpenCV获取图像&#xff0c;你需要安装OpenCV库并学习基本的OpenCV函数。下面是一些获取图像的基本步骤&#xff1a; 导入必要的库&#xff1a;import cv2 读取图像&#xff1a;image cv2.imread("image.jpg") 这将从指定路径读取图像&#xf…

什么是事件冒泡?Littlevgl中的事件冒泡是怎么样的?

什么是事件冒泡?Littlevgl中的事件冒泡是怎么样的&#xff1f; 事件冒泡(Event Bubbling)是指当一个元素上的事件被触发时&#xff0c;该事件会从最底层的元素开始逐级向上传播&#xff0c;直到最顶层的元素(通常是文档对象)被触发。 ​ 例如我们点击一个按钮时&#xff0c;…

前后端分离项目环境搭建

1. 使用到的技术和工具 springboot vue项目的搭建 工具 idea&#xff0c;mavennodejs 2. 后端框架搭建 利用maven创建springboot项目 3. 前端项目搭建 1. 安装相关工具 nodejs&#xff1a; 一个开源、跨平台的 JavaScript 运行时环境&#xff0c;可以理解成java当中需要…

fly-gesture-unlock 手势解锁库

最近要实现前端九宫格手势解锁功能&#xff0c;到 github 和 gitee 上没有找到质量比较好的库&#xff0c;自己对这个功能也是蛮感兴趣的&#xff0c;所以做了这个开源库&#xff0c;用于实现手势解锁功能&#xff0c;可以帮助大家快速完成业务逻辑&#xff0c;提供了完整的 DE…