C++_泛型编程与标准库(六)
C++_泛型编程与标准库(六)
图中标红部分为自己的笔记理解
1、iterator几个特定属性
vc2019的链表list迭代器部分代码
// CLASS TEMPLATE _List_iterator
template <class _Mylist>
class _List_iterator : public _List_const_iterator<_Mylist> {public:using _Mybase = _List_const_iterator<_Mylist>;using iterator_category = bidirectional_iterator_tag;using _Nodeptr = typename _Mylist::_Nodeptr;using value_type = typename _Mylist::value_type;using difference_type = typename _Mylist::difference_type;using pointer = typename _Mylist::pointer;using reference = value_type&;using _Mybase::_Mybase;......
}
我的理解是list中迭代器iterator是类型重定义,即别名,具体代码如下:
using iterator = _List_iterator<_Scary_val>;
其中迭代器_Scary_val是类型重定义,即别名,具体代码如下:
using _Val_types = conditional_t<_Is_simple_alloc_v<_Alnode>, _List_simple_types<_Ty>,_List_iter_types<_Ty, typename _Alty_traits::size_type, typename _Alty_traits::difference_type,typename _Alty_traits::pointer, typename _Alty_traits::const_pointer, _Ty&, const _Ty&, _Nodeptr>>;//从这里这一知道迭代器的特性是什么样的using _Scary_val = _List_val<_Val_types>;//泛型特例化(这里不知道是不是表达的不对),确定_Val_types类型
然后传递给_List_iterator,在_List_iterator里重定义,和GNU2.9的类似
下图是GNU2.9与4.9的_list_iterator
2、指针也属于迭代器的一种,迭代器可以说是泛化指针———Iterator Traits
traits具体运作如下
参考:侯捷泛化编程与标准库、VC2019、《C++Primer》
C++_泛型编程与标准库(六)相关推荐
- C++_泛型编程与标准库(十)——set与map
C++_泛型编程与标准库(十)--set与map 参考:<侯捷泛化编程与标准库>.GNU9.3.0,vs2019 图中标红部分为自己的笔记理解 SET GNU 9.3.0的set部分代码如 ...
- C++_泛型编程与标准库(九)——红黑树的使用
C++_泛型编程与标准库(九)--红黑树的使用 参考:<侯捷泛化编程与标准库>.GNU9.3.0,vs2019 图中标红部分为自己的笔记理解 struct _Rb_tree_node_ba ...
- C++_泛型编程与标准库(八)
C++_泛型编程与标准库(八) 参考:<侯捷泛化编程与标准库>.GNU9.3.0,vs2019 图中标红部分为自己的笔记理解 1.array GNU 2.9的写法 array GNU9.3 ...
- C++_泛型编程与标准库(七)
C++_泛型编程与标准库(七) 参考:<侯捷泛化编程与标准库>.VC2019 图中标红部分为自己的笔记理解 1.深度探索vector 笔者觉得在最新的VC2019下不是二倍增长,虽然是几何 ...
- C++_泛型编程与标准库(五)
C++_泛型编程与标准库(五) 图中标红部分为自己的笔记理解 1.容器与容器之间的关系 2.深度探索list list是双向链表,从vc2019的list源码和以下图片都可以看出 template & ...
- C++_泛型编程与标准库(四)
C++_泛型编程与标准库(四) 图中标红部分为自己的笔记理解 1.注意一个特化的typedefine 2.分配器 2.2.VC2019的allocator类 1. allocate调用operator ...
- C++_泛型编程与标准库(三)
C++_泛型编程与标准库(三) 图中标红部分为自己的笔记理解 1.分配器简单测试,后面还会单讲 实测VC2019在Microsoft Visual Studio\2019\Community\VC\T ...
- C++_泛型编程与标准库(二)
C++_泛型编程与标准库(二) 图中标红部分为自己的笔记理解 为什么快?因为是红黑树实现的(高度平衡树)
- C++_泛型编程与标准库(一)
C++_泛型编程与标准库(一) 图中标红部分为自己的笔记理解
最新文章
- CISCO设备上DHCP实例
- iOS架构-静态库.a的打包及使用(2)
- html 传参数 菜单自动展开,【HTML5】Jquery打造竖向伸缩/展开菜单
- python怎么显示分数_在Python中使用分数
- Java 输出流中的flush方法
- 谈谈iOS获取调用链
- jQuery中的ajax、jquery中ajax全局事件、load实现页面无刷新局部加载、ajax跨域请求jsonp、利用formData对象向服务端异步发送二进制数据,表单序列化(异步获取表单内容)
- mysql------explain工具
- 化敌为友,微软出手优化 Chrome!
- openfire源码编译后部署到linux
- java基础——自动装箱与拆箱
- 计算机的mac被交换机绑定,华为交换机绑定IP与MAC地址 -电脑资料
- OLED12864 液晶屏
- 肌电信号 聚类 Matlab
- Java微信小程序商城源码,Java微信开发框架源码,前后端分离
- WOMic 使用wifi 将手机作为电脑麦克风音频输入
- 各省GDP+人均GDP+固定投资+财政收支等面板dta数据(1949-2020年)
- Unit 3-Lecture 5: The Pigeonhole Principle and Inclusion-Exclusion
- Redis核心技术笔记——Redis数据结构
- Vue-Cli 3.0 + vue.config.js
热门文章
- Microbiome:植物发育和氮肥共同作用下的小麦根系微生物组
- 淡水:21世纪的分子微生物生态学
- 最前沿的科学, 寻找最聪明的你—“宏基因组”公众号编辑招募
- P4报名截止|引爆1.1万亿基因测序市场,精准医学50+殿堂级专家议程大曝光
- 中国科学家Cell重要评述文章: 宏基因组学成为病毒分类新方法
- mysql内存爆_线上MySQL机器内存爆掉原因分析与解决
- R语言PCA主成分分析(Principle Component Analysis)实战2
- 潜在狄利克雷分配(LDA,Latent Dirichlet Allocation)模型(三)
- 降维的定义、维度诅咒、降维的意义
- 半监督+标签传播算法