迭代器的设计原则

news/2024/10/31 4:20:03/

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_categoryI::value_typeI::diiference_typeI::pointerI::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.ppmy.cn/news/107847.html

相关文章

操作系统期末复习——课时八——进程同步(二)

1、信号量 信号量机制是一种功能较强的机制&#xff0c;可用来解决互斥和同步问题&#xff0c;它只能被两个标准的原语wait(S)&#xff08;P操作&#xff09;和signal(S)&#xff08;V操作 &#xff09;访问。 注意&#xff1a;原语是一种特殊的程序段&#xff0c;其执行只能一…

软件测试银行金融项目如何测?看看资深测试老鸟的总结,一篇足够...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 自动化测试&#x…

尝试解决 orbslam3 保存地图时概率性 Segmentation Fault(core dumped) 段错误(核心已转储)的问题

1、问题 orbslam3 启用保存地图功能后&#xff0c;有一定概率在保存过程中崩溃&#xff0c;报错 Segmentation Fault(core dumped) 或 段错误&#xff08;核心已转储&#xff09;&#xff0c;导致辛辛苦苦建的图全部丢失。 2、 排查 通过增加打印&#xff0c;锁定崩溃发生的…

MQ学习笔记--(RabbitMQ)

目录&#xff1a; 初识MQRabbitMQ快速入门SpringAMQP 初始MQ&#xff1a; 同步通讯异步通讯MQ常见框架 初始MQ–同步通讯的优缺点 同步通讯和异步通讯 同步通讯&#xff1a;比如微信视频&#xff0c;同一时间只能跟一个人视频&#xff0c;其他人想跟你视频的话&#xff0c;…

搜索引擎变天了!谷歌宣布开放「生成式搜索平台」!AI 大模型颠覆搜索体验

作者 | 小戏、兔子酱 搜索引擎&#xff0c;可能真的要变天了&#xff01; Google 终于要迎来它 25 年来最大的改变&#xff0c;谷歌宣布了开始内测开放【生成式搜索平台&#xff08;Search Generative Experience&#xff0c;SGE&#xff09;】&#xff0c;并逐步舍弃那些甚至是…

如何监控电动车充电桩能耗?

一 背景 随着新能源汽车的快速发展&#xff0c;像特斯拉、BYD、蔚来、小鹏和理想等品牌的电动汽车在我们的日常生活中越来越多了&#xff0c;可见电动汽车如今已逐渐被我们所认可了。同汽油车需要加油一样&#xff0c;电动汽车需要充电&#xff0c;如此一来&#xff0c;电动汽…

日志统计递增三元组

题目 小明维护着一个程序员论坛。现在他收集了一份"点赞"日志&#xff0c;日志共有N 行。其中每一行的格式是&#xff1a; ts id 表示在ts 时刻编号id 的帖子收到一个"赞"。 现在小明想统计有哪些帖子曾经是"热帖"。如果一个帖子曾在任意一个长度…

【服务器】安卓手机使用Termux搭建web服务

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员&#xff0c;2024届电子信息研究生 目录 概述 1.搭建apache 2.安装cpolar内网穿透 3.公网访问配置 4.固定公网地址 5.添加站点 概述 Termux是一个Android终端仿真应用程序&#xff0c;用于在 Android 手机上搭建一个…