03.31_111期_C++_list特性和使用

    利用想定义一个带头双向链表的迭代器
    只能通过在  带头双向链表的类  中同一个命名空间中 再定义一个类
    这个类规定 带头双向链表中迭代器的行为
     下面的设计需要注意:
         1. 定义的这个类需要写出构造函数,
            1.1 构造函数规定了ListIterator这个类的实例创建出来,
                就一定是一个指向List 中的一个类型为 Node的结点  的指针
                再typedef ListNode<T> Node; 一次,进行封装
            1.2 ListIterator看不到Node这个类型,所以只能在 ListIterator 中
     
         2. 定义的这个类不需要写出拷贝构造 和 析构函数
            2.1 因为ListIterator的实例 一定是一个指针,指针指向的变量的类型不确定
                但是该实例仍然是一个内置类型,
                C++类中生成的默认拷贝构造会对 内置类型的指针  进行浅拷贝
                也就是在写下iterator it1(it2); (也就相当于ListIterator<T> it1(it2);)这样的代码时
                可以直接利用 ListIterator默认的拷贝构造,让两个指针的值完全一样
            2.2 不用写析构函数的原因是ListerIterator的实例是指向list中的一个结点的
                要delete这个结点也是 list 实例的对象调用析构来delete
                而不是通过迭代器 去释放结点的空间

方法一:
     下面专门实现了 ListConstIterator 这个类,来规定一部分迭代器的行为
     如果你的迭代器需要 只读,这里的只读是指 迭代器所指向的结点中的数据不能被修改
     那么在 ListConstIterator 这个类中可以刻意修改operator* 和 operator->
      对两个运算符重载的返回值 进行const修饰 

             下面返回链表的头指针可以有几种方法
             一、直接使用匿名对象返回,这也是匿名对象的一种常用用法
             二、利用构造函数对iterator进行初始化,然后返回这个迭代器实例
             三、直接返回_head->_next,
                   实际上发生了隐式类型转换,由于ListIterator这个类中ListIterator(Node* node)
                   这个函数是单参数的,所以可以直接返回_head->_next
            return iterator(_head->_next);
            return _head->_next;


        在list所创建的类中,迭代起的产生都是通过list中的  begin()或end()方法实现的
        要想传入一个const list<T> 类型的对象,输出一个const修饰的迭代器
        在定义专门针对const list<T> 类型的对象 输出迭代器的时候,
        必须使用const_iterator这种匿名对象进行实现

        aa2的构造函数是一个多参数的函数
        也可以使用{ 1, 1 }进行隐式类型转换
        也就是说 A aa2 = { 1, 1 }; 这句话发生了隐式类型转换

        注意!!!!!!!!!!!!!!!!!!!!
         这里{ 1, 1 }并不是数组,只是因为要使用这种隐式类型转换时
        如果构造函数是多参数的,那么只能用花括号 {} 进行包括

        利用匿名对象A(2, 2)进行初始化时
        将通过 先构造 再 拷贝构造的

            虽然利用下面的方法能够利用解引用迭代器然后去访问 A 这个结构体中的成员
             但是不能通过 it->_al来访问 结构体中的成员,
             所以实际上想要将iterator作为 控制 list 成员 的类,
             应该再重载 -> 这个运算符 
             重载完成后下面代码中的   it->等价于&_node->_data
             所以实际上想要通过箭头得到_a1这个成员,应使用 it->->_a1 这种方式
             
             此时编译器做了优化,让程序员可以直接使用 it->_a1 获得成员
             那么it->->_a1就不再合法
             但是可以使用如下的方式调用
            cout << it.operator->()->_a1 << ":" << it.operator->()->_a2 << endl;
            cout << (*it)._a1 << ":" << (*it)._a2 << endl;

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

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

相关文章

边缘计算盒子与云计算:谁更适合您的业务需求?

边缘计算盒子和云计算&#xff0c;这两个概念听起来可能有点复杂&#xff0c;但其实它们就是两种不同的数据处理方式。那谁更适合您的业务需求呢&#xff1f;咱们来详细说说。 边缘计算盒子&#xff0c;就像是个小型的数据处理中心&#xff0c;放在离你业务现场比较近的地方。它…

Tensorflow2.0笔记 - 自定义Layer和Model实现CIFAR10数据集的训练

本笔记记录使用自定义Layer和Model来做CIFAR10数据集的训练。 CIFAR10数据集下载&#xff1a; https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz 自定义的Layer和Model实现较为简单&#xff0c;参数量较少&#xff0c;并且没有卷积层和dropout等&#xff0c;最终准确率…

基于java+SpringBoot+Vue的图书个性化推荐系统的设计与实现

基于javaSpringBootVue的图书个性化推荐系统的设计与实现 开发语言: Java 数据库: MySQL技术: SpringBoot MyBatis Vue工具: IDEA/Eclipse、Navicat、Maven 系统展示 前台展示 首页&#xff1a;展示图书信息、好书推荐、留言反馈等。 图书信息&#xff1a;用户可以查看图…

easyExcel 模版导出 中间数据纵向延伸,并且对指定列进行合并

想要达到的效果 引入maven引用 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.2.1</version></dependency> 按照要求创建模版 备注 : 模板注意 用{} 来表示你要用的变量 如果本…

商务电子邮件: 在WorkPlace中高效且安全

高效和安全的沟通是任何组织成功的核心。在我们关于电子邮件类型的系列文章的第二期中&#xff0c;我们将重点关注商业电子邮件在促进无缝交互中的关键作用。当你身处重要的工作场环境时&#xff0c;本系列的每篇文章都提供了电子邮件的不同维度的视角。 “2024年&#xff0c;全…

01 使用ArcGIS生成节点路径

目录 1 测试数据准备 1.1 创建空的GDB文件及数据集 1.2 创建道路图层 1.3 绘制路网

计算机视觉之三维重建(6)---多视图几何(上)

文章目录 一、运动恢复结构问题&#xff08;SfM&#xff09;二、欧式结构恢复2.1 概述2.2 求解2.3 欧式结构恢复歧义 三、仿射结构恢复3.1 概述3.2 因式分解法3.3 总结3.4 仿射结构恢复歧义 一、运动恢复结构问题&#xff08;SfM&#xff09; 1. 运动恢复结构问题&#xff1a;通…

enqueue:oracle锁机制

实现锁的方式就是排队咯&#xff0c;那么排队就是有enqueue这么个结构来管理 管理锁的结构叫队列&#xff0c;即enqueue 所有和enqueue相关的函数都叫KSQ-- kernal service enqueue lock是从应用层面看到的锁&#xff0c;enqueue是oracle内部管理锁的一个结构。 可以用v$lock_…

python将visio转换为 PDF 文件

参考链接&#xff1a;在 Python 中將 Visio 轉換為 PDF | Python Visio 到 PDF 庫 (aspose.com) 下载软件包&#xff1a; pip install aspose-diagram-python 读取文件&#xff0c;保存为PDF # 此代碼示例演示如何使用 PDF 保存選項將 Visio 轉換為 PDF import aspose.dia…

基于单片机的超声波测距仪设计_kaic

摘 要 如今社会持续深化转型&#xff0c;在人工智能领域&#xff0c;传感器采集外部数据&#xff0c;经过处理器对数 据运算和处理&#xff0c;从而实现相应的功能。比如自动驾驶技术中&#xff0c;超声波传感器应用广泛&#xff0c; 超声波是一种频率在 20khz 以上的声波&…

HTML优化SEO的实用技巧

在网站开发中&#xff0c;除了关注设计和用户体验&#xff0c;SEO&#xff08;搜索引擎优化&#xff09;也是提升网站流量和可见度的关键。合理的HTML结构和元素运用能够帮助搜索引擎更好地理解页面内容&#xff0c;从而提高搜索排名。以下是一些基于HTML的SEO优化技巧&#xf…

OpenHarmony实战:小型系统移植概述

驱动主要包含两部分&#xff0c;平台驱动和器件驱动。平台驱动主要包括通常在SOC内的GPIO、I2C、SPI等&#xff1b;器件驱动则主要包含通常在SOC外的器件&#xff0c;如 LCD、TP、WLAN等 图1 OpenHarmony 驱动分类 HDF驱动被设计为可以跨OS使用的驱动程序&#xff0c;HDF驱动框…

【WebKit架构讲解】

&#x1f308;个人主页:程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

Nginx从安装到高可用实用教程!

一、Nginx安装 1、去官网http://nginx.org/下载对应的nginx包&#xff0c;推荐使用稳定版本 2、上传nginx到linux系统 3、安装依赖环境 (1)安装gcc环境 yum install gcc-c(2)安装PCRE库&#xff0c;用于解析正则表达式 yum install -y pcre pcre-devel(3)zlib压缩和解压缩…

java面试题(3)|解释 null 和 “null“ 之间的区别,并举例说明它们在编程中的使用场景

null 和 "null" 之间的区别主要在于语义和数据类型上&#xff1a; null 是一个特殊的值&#xff0c;通常用于表示缺少有效值或未定义的变量。在许多编程语言中&#xff0c;null是一个关键字&#xff0c;表示空值。例如&#xff0c;在Java中&#xff0c;当一个对象尚…

解决el-table设置固定高度后,展示不同列时表格高度变小bug

解决el-table设置固定高度后&#xff0c;展示不同列时表格高度变小bug 1、需求分析2、解决方案 1、需求分析 在el-table使用过程中&#xff0c;选择多个参数展示更多列时会出现高度变小问题究其原因可知是el-table列动态发生变化后&#xff0c;el-table__body-wrapper的高度变…

sqlite在非主键创建一个自增字段

sqlite 自增比较奇葩&#xff0c;自增字段必须建在主键上&#xff0c;但主键很重要。不是每种情况都是给自增去做。比如要实现replace into 时&#xff0c; 要主键作为更新标识。用自增很难实现。 开工&#xff1a; 1、建立一个主表&#xff0c;主表的ID是自增ID&#xff0c;…

CNAS软件测试公司有什么好处?如何选择靠谱的软件测试公司?

CNAS认可是中国合格评定国家认可委员会的英文缩写&#xff0c;由国家认证认可监督管理委员会批准设立并授权的国家认可机构&#xff0c;统一负责对认证机构、实验室和检验机构等相关机构的认可工作。 在软件测试行业&#xff0c;CNAS认可具有重要意义。它标志着一个软件测试公…

站群服务器如何提高搜索引擎排名

站群服务器是一种专门为多个相关联的网站提供支持的服务器&#xff0c;旨在通过网站集合的形式提高搜索引擎排名和曝光度。那么站群服务器如何提高搜索引擎排名呢?Rak部落小编为您整理发布。 站群服务器提高搜索引擎排名的原理主要在于以下几个方面&#xff1a; - **提高网站…

websocket 对于手游的意义

WebSocket作为一个HTTP的升级协议&#xff0c;其实对HTTP协议用的不多&#xff0c;主要是消息头相关部分&#xff0c;WebScoket协议最初的动机应该是给网页应用增加一个更贴近实时环境的通讯方式&#xff0c;让某些网页应用得到更佳的通讯质量&#xff08;双工&#xff0c;低延…