C++学习笔记(20)——模板的进阶与继承(一)

系列文章

http://t.csdnimg.cn/u80hL


目录

  • 系列文章
    • @[TOC](目录)
  • 一、定义
  • 二、迭代器——六大组件之一
    • 封装的作用
    • 封装要注意的点
    • 迭代器封装设计很巧妙
    • 迭代器适配器

一、定义

访问容器有时使用原生指针,有时迭代器为了避免复杂化统一使用迭代器。
容器与算法不分离,容器与算法是伴随相生的,算法一般是根据容器的性质而定的;

  1. 容器
  2. 结构
  3. 数组
  4. 链表
  5. 树型
  6. 算法

二、迭代器——六大组件之一

封装的作用

  1. 封装屏蔽底层实现的复杂细节;
  2. 复用过去已经实现的;
  3. 反向迭代器用正向迭代器封装实现,反向迭代器用正向迭代器封装实现;
  4. 反向迭代器用正向迭代器实例化;

封装要注意的点

  1. 实现封装时,我们只要确保输入输出正确即可;
  2. 实现封装后我们可以使用统一简单的方式访问容器;

迭代器封装设计很巧妙

  1. 物理层面,指针的大小是四个字节,迭代器(地址)大小也是四个字节,物理层面与原生指针一样大;
  2. 迭代器的operator()++与指针解引用后++写法一样,底层原理不一样;

迭代器适配器

不同容器的迭代器有功能上的重叠,因此我们可以写一个迭代器适配器去套用以提升编码效率;

反向迭代器可以被正向迭代器实现是因为他们的解引用方式是一样的;

  1. 迭代器可以适配的前提是功能存在重叠;
  2. 具有常性的自定义类型对象可以调用非const函数,这是C++为自定义类型开的例外。(这里非const对象调用了非const成员函数,这在语法上是错误的);
  3. 我们实现vector的反向迭代器时,有一个排序错位,我们在解引用阶段把迭代器一开始的排序错位修正了;

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

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

相关文章

Linux-vi、vim

使用Xshell远程登录到Linux主机进行操作 命令行不用全部掌握, 一般编辑大文件,比较复杂的情况下, 我们还是使用Xftp工具, down下来再恢复回去。

导航【仿牛客网社区论坛项目】

导航【仿牛客网论坛项目】 前言版权导航【仿牛客网社区论坛项目】最后 前言 2024-5-14 11:08:00 这个是找寒假实习的时候,牛客网中学习的项目。 原来准备再总结一下,然后就没后续了。 以下内容源自《【创作模板】》 仅供学习交流使用 版权 禁止其他…

AI绘画入门指南:完备的AI绘画学习路线,十分钟把你领进门

2024新风口大揭秘!不是直播,也不是短视频,而是AI绘本! 有一句话说得好:站在风口上,猪都能飞起来!想要用AI拿到大结果,一定要选对大的垂类赛道。 那么,为什么是AI绘本呢…

8数据通信名词解释

目录 数据通信: 信号: 信源: 信宿: 信道: 三种通信方式:单工,半双工,全双工 数据传输方式: 传输模式:同步传输和异步传输 码元: 数字通信…

未来IT新潮:共探技术革命与行业趋势

未来IT新潮:共探技术革命与行业趋势 随着科技的飞速发展,IT行业无疑成为了推动全球经济和社会进步的关键引擎。现代社会中,每一次技术创新都可能彻底改变我们的生活方式、工作方式和交流方式。云计算、大数据、人工智能、物联网、5G通信和区…

第二证券股市策略:股票st连续跌停卖不出怎么办啊?

对于接连跌停的st股票买不出,投资者只能早早地挂出跌停托付单等着成交,在当天没有成交,其托付单会被撤销,投资者能够挑选进行隔夜托付卖出时,最好在证券公司清算之后,再进行托付卖出,否则&#…

近邻算法原理详解

近邻算法,也称为K近邻(K-Nearest Neighbors,简称KNN),是监督学习中的一个基础方法,尤其在分类和回归问题中广泛应用。本文将深入探讨近邻算法的基本原理、工作流程以及在实际应用中的优缺点。 ### 基本概念…

利用GoAccess实现中文环境下的实时Web日志分析

Web日志分析对于网站管理和优化至关重要,它能帮助网站管理员理解用户行为、识别流量模式,并及时发现潜在的问题。GoAccess是一款开源的Web日志分析工具,它支持实时数据展示,并且可以通过简单的配置支持中文环境,使分析…

调测索喜应用收到 SIGSEGV 信号

同样的程序,已收到两份异常报告,还在定位问题; 1.第一种情况:PC指向静态库中函数的一个地址 [E][01-01 00:00:21808][sc2000_app][ac_sigsegv_handler :81] Signal 11 Memory location (nil) R0 0000000000000000 R1 0000…

hbuilder常见问题(技巧)总结

目录 问题hbuilder x 软件内如何实现html代码自动对齐hbuilder x 和sublime_text软件中实现复制/剪切当前行代码 快捷键代码提示 待续、更新中 问题 hbuilder x 软件内如何实现html代码自动对齐 Ctrlk hbuilder x 和sublime_text软件中实现复制/剪切当前行代码 不用选中直接Ct…

低空经济之无人机

朋友们,今天来聊聊个超酷的话题——低空经济之无人机! 无人机不仅让天空变得触手可及,还带来了无尽的商业可能,简直就是新时代的“空中小助手”啊! 说到无人机,你们是不是也和我一样,脑海里立马…

详解JS的URL()和URLSearchParams() API接口

两个 API 接口定义 URL() 构造函数返回一个新创建的 URL 对象,表示由一组参数定义的 URL。 URLSearchParams 接口定义了一些实用的方法来处理 URL 的查询字符串。 快速了解两个 API 在哪里用 以前我们要对地址栏中的 URL 地址进行分析处理,需要自己进…

【Mac】如何解决打开PD虚拟机后Mac无法上网的问题?

问题描述 部分用户在运行Parallels Desktop并打开Windows 11后,发现Windows上网没有问题,但是Mac主机不能访问带域名的网站,而访问带IP的网站没问题,退出Parallels虚拟机以后,Mac网络又恢复正常。 解决办法 退出 Pa…

vue的history模式返回404

vue的history模式返回404,可以把vue工程部署到静态资源服务器nginx上,代替用tomcat,然后在nginx配置: //vue中设置路径是: module.exports { publicPath:/ } 那么nginx中配置vue为: location / { root /us…

东B编译原理第二次实验课

由于本人比较懒还没咋学编译原理,并不知道LR,算符优先是啥方法,就按照自己想法写了个非常丧心病狂的代码 非常SB的是一个代码过五个题,我知道肯定漏洞百出,但是懒惰如我已经懒得改了,能过就好 下边放下原…

swift-resizableImageWithCapInsets(可拉伸图片)

resizableImageWithCapInsets 他的作用是用之前的的image创建出一个可拉伸的image,这个image的作用就是当要填充的imageView大于当前image时就会进行拉伸,但是这个可拉伸image是可以设置屏蔽区域的 也就是告诉你哪部分不要用来拉伸 let capInsets UIEdg…

在哪些地方能用到PMP认证?参加PMP培训怎么选择靠谱?

PMP认证在实际运用中比我们想象的作用要大得多,甚至涉及到了工作、生活各个方面,这其中主要是在工作方面发挥作用,帮助我们在项目管理相关岗位发挥更大的作用。 因为PMP认证是项目管理协会发起,考试也是针对专业项目管理人员的测…

golang中三种线程安全的MAP

一、map 是什么 map 是 Go 中用于存储 key-value 关系数据的数据结构,类似 C 中的 map,Python 中的 dict。Go 中 map 的使用很简单,但是对于初学者,经常会犯两个错误:没有初始化,并发读写。 1、未初始化的…

Linux服务器中了病毒后的清理方法

病毒的基础排查 1. 检查计划任务 黑客入侵服务器后,为了让病毒脚本持续执行,通常会在计划任务配置文件里面写入定时执行的脚本任务。 检查命令说明ls -l /var/spool/cron/*查看用户级计划任务配置。有的人喜欢用 crontab -l 命令来排查,这…

探索设计模式的魅力:机器学习赋能,引领“去中心化”模式新纪元

​🌈 个人主页:danci_ 🔥 系列专栏:《设计模式》 💪🏻 制定明确可量化的目标,坚持默默的做事。 探索设计模式的魅力:机器学习赋能,引领“去中心化”模式新纪元 ✨欢迎加入…