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++_泛型编程与标准库(六)相关推荐

  1. C++_泛型编程与标准库(十)——set与map

    C++_泛型编程与标准库(十)--set与map 参考:<侯捷泛化编程与标准库>.GNU9.3.0,vs2019 图中标红部分为自己的笔记理解 SET GNU 9.3.0的set部分代码如 ...

  2. C++_泛型编程与标准库(九)——红黑树的使用

    C++_泛型编程与标准库(九)--红黑树的使用 参考:<侯捷泛化编程与标准库>.GNU9.3.0,vs2019 图中标红部分为自己的笔记理解 struct _Rb_tree_node_ba ...

  3. C++_泛型编程与标准库(八)

    C++_泛型编程与标准库(八) 参考:<侯捷泛化编程与标准库>.GNU9.3.0,vs2019 图中标红部分为自己的笔记理解 1.array GNU 2.9的写法 array GNU9.3 ...

  4. C++_泛型编程与标准库(七)

    C++_泛型编程与标准库(七) 参考:<侯捷泛化编程与标准库>.VC2019 图中标红部分为自己的笔记理解 1.深度探索vector 笔者觉得在最新的VC2019下不是二倍增长,虽然是几何 ...

  5. C++_泛型编程与标准库(五)

    C++_泛型编程与标准库(五) 图中标红部分为自己的笔记理解 1.容器与容器之间的关系 2.深度探索list list是双向链表,从vc2019的list源码和以下图片都可以看出 template & ...

  6. C++_泛型编程与标准库(四)

    C++_泛型编程与标准库(四) 图中标红部分为自己的笔记理解 1.注意一个特化的typedefine 2.分配器 2.2.VC2019的allocator类 1. allocate调用operator ...

  7. C++_泛型编程与标准库(三)

    C++_泛型编程与标准库(三) 图中标红部分为自己的笔记理解 1.分配器简单测试,后面还会单讲 实测VC2019在Microsoft Visual Studio\2019\Community\VC\T ...

  8. C++_泛型编程与标准库(二)

    C++_泛型编程与标准库(二) 图中标红部分为自己的笔记理解 为什么快?因为是红黑树实现的(高度平衡树)

  9. C++_泛型编程与标准库(一)

    C++_泛型编程与标准库(一) 图中标红部分为自己的笔记理解

最新文章

  1. CISCO设备上DHCP实例
  2. iOS架构-静态库.a的打包及使用(2)
  3. html 传参数 菜单自动展开,【HTML5】Jquery打造竖向伸缩/展开菜单
  4. python怎么显示分数_在Python中使用分数
  5. Java 输出流中的flush方法
  6. 谈谈iOS获取调用链
  7. jQuery中的ajax、jquery中ajax全局事件、load实现页面无刷新局部加载、ajax跨域请求jsonp、利用formData对象向服务端异步发送二进制数据,表单序列化(异步获取表单内容)
  8. mysql------explain工具
  9. 化敌为友,微软出手优化 Chrome!
  10. openfire源码编译后部署到linux
  11. java基础——自动装箱与拆箱
  12. 计算机的mac被交换机绑定,华为交换机绑定IP与MAC地址 -电脑资料
  13. OLED12864 液晶屏
  14. 肌电信号 聚类 Matlab
  15. Java微信小程序商城源码,Java微信开发框架源码,前后端分离
  16. WOMic 使用wifi 将手机作为电脑麦克风音频输入
  17. 各省GDP+人均GDP+固定投资+财政收支等面板dta数据(1949-2020年)
  18. Unit 3-Lecture 5: The Pigeonhole Principle and Inclusion-Exclusion
  19. Redis核心技术笔记——Redis数据结构
  20. Vue-Cli 3.0 + vue.config.js

热门文章

  1. Microbiome:植物发育和氮肥共同作用下的小麦根系微生物组
  2. 淡水:21世纪的分子微生物生态学
  3. 最前沿的科学, 寻找最聪明的你—“宏基因组”公众号编辑招募
  4. P4报名截止|引爆1.1万亿基因测序市场,精准医学50+殿堂级专家议程大曝光
  5. 中国科学家Cell重要评述文章: 宏基因组学成为病毒分类新方法
  6. mysql内存爆_线上MySQL机器内存爆掉原因分析与解决
  7. R语言PCA主成分分析(Principle Component Analysis)实战2
  8. 潜在狄利克雷分配(LDA,Latent Dirichlet Allocation)模型(三)
  9. 降维的定义、维度诅咒、降维的意义
  10. 半监督+标签传播算法