迭代器的设计原则

news2024/11/23 11:01:09

iterator必须提供5种associated types

1.iterator_category
2.value_type
3.diiference_type
4.pointer
5.reference

对于iterator_category来说,例如双向链表:
typedef bidirectional_iterator_tag iterator_category;

算法和迭代器的关系:

算法提问,迭代器回答

algorithm(I first,I end)
{
...
	I::iterator_category
	I::value_type
	I::diiference_type
	I::pointer
	I::reference
...
}

Traits 萃取机

由于iterator回答的是class中使用的typedef
而算法提问时,可能涉及到non_class iterators
此时就想要中间层:Traits
用于分离class iterators和non_class iterators
Traits:

template <class I> 
struct iterator_traits{
	typedef typename I::value_type value_type;
};

于是当需要知道I的value type时便可这么写:

void algorithm(...){
	typename iterator_traits <I>::value_type v1;
}

不同类型传递给萃取器:
在这里插入图片描述
value_type的主要目的是用来声明变量,而声明一个无法被赋值的变量没什么用,所以iterator(即便是constant iterator)的value type 不应该加上const。iterator若是const int*,其value_type应该是int而非const int。

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

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

相关文章

WAV 格式和音频裁剪、转码处理

文章目录 0、参考资料1、WAV 格式了解1.1 WAV 文件头1.2 RIFF Chunk 区块1.3 Format Chunk 区块1.4 Data Chunk 区块 2、音频剪裁 -> 解码 -> 编码2.1 mp32.1.1 裁剪2.1.2 解码2.1.3 编码 2.2 pcm 裁剪 0、参考资料 【音频处理】WAV 文件格式分析 ( 逐个字节解析文件头 …

用友BIP新一代全球司库,重塑企业资金管理新价值

资金是企业有效推进业务运营与发展并赖以生存的血液和养料&#xff0c;资金管理是企业财务管理的核心职能&#xff0c;在《“十四五”中央企业发展规划纲要》中明确央企要将集团资金管理业务规划置于重要战略位置。而国资委1号文发布&#xff0c;则进一步强调司库建设对中央企业…

2核2G3M腾讯云轻量应用服务器CPU性能测评

阿里云轻量应用服务器2核2G3M带宽一年95元&#xff0c;100%CPU性能&#xff0c;3M带宽下载速度384KB/秒&#xff0c;40GB SSD系统盘&#xff0c;月流量200GB&#xff0c;折合每天6.6GB流量&#xff0c;超出月流量包的流量按照0.8元每GB的支付流量费&#xff0c;地域节点可选广州…

vue+springboot前后端分离项目整合部署流程

我们在进行前后端分离开发的时候&#xff0c;一般是将前端项目部署到nginx服务器上&#xff0c;与后端项目分开部署&#xff0c;但是如果是个人开发的小型项目&#xff0c;不需要这么麻烦&#xff0c;直接将前后端项目放到一起部署即可。 本文就来介绍一下前后端项目一起部署的…

第一章 部署DHCP服务

♥️作者介绍&#xff1a;奇妙的大歪 ♥️个人名言&#xff1a;但行前路&#xff0c;不负韶华&#xff01; ♥️个人简介&#xff1a;云计算网络运维专业人员 目录 DHCP&#xff1a;动态主机配置协议 1.DHCP的优点 2.DHCP的分配方式 3.DHCP的工作原理&#xff08;租约过程…

winows搭建远程仓库Github(linux通用)

winows搭建远程仓库Github&#xff08;linux通用&#xff09; 文章目录 winows搭建远程仓库Github&#xff08;linux通用&#xff09;创建远程仓库配置SSH克隆项目多人协同开发代码冲突标签分支 创建远程仓库 以下操作为演示在Github网站上创建远程仓库 1.登陆注册Github 2.创…

Linux知识点 -- 进程概念(二)

Linux知识点 – 进程概念&#xff08;二&#xff09; 文章目录 Linux知识点 -- 进程概念&#xff08;二&#xff09;一、进程优先级1.概念2.进程中的优先级信息3.更改进程优先级4.进程切换 二、环境变量1.概念2.常见的环境变量3.环境变量相关命令4.通过代码获取环境变量5.环境变…

JDK相关知识

查看是否安装了jdk java -version 将输出当前系统上默认 Java 环境的版本信息&#xff0c;其中包括 JDK 的位数&#xff08;64 位或 32 位&#xff09;。如果输出中包括 “64-Bit” 或 “x64” &#xff0c;则表示你的 JDK 是 64 位的&#xff1b;否则&#xff0c;它就是 32 位…

PackML 学习笔记

PackML 的官网 上如此描述PackML--- PackML是由OMAC开发并由ISA采用的自动化标准TR88.00.02&#xff0c;可以更轻松地传输和检索一致的机器数据。PackML的主要目标是鼓励整个工厂车间的通用“外观和感觉”&#xff0c;并支持和鼓励行业创新。 优点 这里的重点是通用“外观和感…

MySQL树状结构表查询通解

文章目录 前言一、数据准备二、代码实现三、案例使用1. 建立数据表实体类2. mapper文件3. 使用 四、总结 前言 ​ 最近做了一个中医药方面的项目&#xff0c;该项目分为游戏端和服务端。笔者负责的是服务端的开发。在服务端的业务中包含两部分&#xff1a;系统信息管理模块、游…

这是我见过对redis最直白的讲解,看完我哭了......

我是Redis 你好&#xff0c;我是Redis&#xff0c;一个叫Antirez的男人把我带到了这个世界上。 说起我的诞生&#xff0c;跟关系数据库MySQL还挺有渊源的。 在我还没来到这个世界上的时候&#xff0c;MySQL过的很辛苦&#xff0c;互联网发展的越来越快&#xff0c;它容纳的数…

0801向量及其线性运算-向量代数与空间解析几何

1 向量的概念 既有大小又有方向的量叫做向量&#xff08;或矢量&#xff09;。 表示 用有向线段表示向量&#xff1a; 向量大小&#xff1a;有向线段的长度向量方向&#xff1a;有向线段的方向 示例如下图1-1所示&#xff1a; 记法&#xff1a;字母上面加箭头 单字母&#x…

9.前后端的身份认证

1 web开发模式 开发模式有两种&#xff0c;一种是服务端直接返回html字符串&#xff0c;另一种是前后端分类 服务端直接返回html字符串是这样的 这样做的优缺点如下 优点 加载页面快&#xff0c;这样会让设备的能耗减小&#xff0c;对于移动端来讲更省电利于搜索引擎获取数…

北京筑龙吴英礼:ChatGPT在采购与招标中的应用

近日&#xff0c;由中国招标投标协会举办的“人工智能对招标采购数字化发展的机遇与挑战交流座谈会”在北京召开。北京筑龙CTO吴英礼受邀出席&#xff0c;围绕"ChatGPT在招标投标中的应用"进行探讨&#xff0c;从ChatGPT背后的的技术、ChatGPT助力招标投标行业数字化…

【C++】-8- string〔常见接口函数使用〕

文章目录 概览标准库中的string类「string类&#xff08;了解&#xff09;」﹝编码﹞ 「string类的常用函数接口」﹝1.string类对象的常见构造﹞﹝2.string类对象的修改操作﹞‹ c_str ›‹ npos ›‹ string结构 › ﹝3.string类对象的容量操作﹞‹ clear ›‹ reserve ›‹ r…

Pulsar 负载均衡与transaction_coordinator_assign

背景与现状 TC加载到哪个broker上取决于transaction_coordinator_assign-partition-${TC ID}分区加载到哪个broker上。 默认transaction_coordinator_assign有16个分区&#xff0c;因此默认有16个TC&#xff0c;我们需要根据集群机器/broker数目来设置合理的TC个数。 为了保证…

如何使用递归 Grep 命令在目录中搜索?

在 Linux 系统中&#xff0c;grep 是一个强大的文本搜索工具&#xff0c;可以用于在文件中查找指定的文本模式。当需要在目录及其子目录中搜索特定的文本时&#xff0c;可以使用递归 grep 命令来快速定位目标文件。本文将详细介绍如何使用递归 grep 命令来搜索目录中的文件。 递…

如何搭建第一个SpringBoot+MyBatis项目

&#x1f648;作者简介&#xff1a;练习时长两年半的Java up主 &#x1f649;个人主页&#xff1a;程序员老茶 &#x1f64a; ps:点赞&#x1f44d;是免费的&#xff0c;却可以让写博客的作者开兴好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全栈&#xff0c;…

ChatGPT已能模仿任何写作风格,让你的自媒体快速起号

我认识的一两个技术大佬目前失业在家&#xff0c;压力不小。对于现在的就业市场来说&#xff0c;再找工作&#xff0c;高不成低不就。他们的薪资&#xff0c;一般企业无法承受&#xff0c;大厂岗位又在缩减。今年真正感受到了寒冬。 对于我们还有饭吃的程序员&#xff0c;现在不…

【Linux网络服务】Apache网页优化

Apache网页优化 一、网页压缩1.1网页压缩步骤 二、网页缓存三、隐藏版本信息五、Apache防盗链 一、网页压缩 在企业中&#xff0c;部署Apache后只采用默认的配置参数&#xff0c;会引发网站很多问题&#xff0c;换言之默认配置是针对以前较低的服务器配置的&#xff0c;以前的…