stl之iterator traits

iterator需要遵循的原则

iterator是算法和容器的桥梁,算法要知道要处理的容器范围,算法在操作的时候,很可能要知道这个iterator有哪些性质来做最佳化的动作

iterator至少要回答3个问题:
1.iterator_category
2.different_type
3.value_type

实际设置了五种,还有reference和pionter未被使用过

所以iterator必须定义好这5种类型

那算法问问题,iterator答,traits用在那里呢?

当iterator是一个自然指针的时候,它并不是class,没有办法回答问题的时候,需要一个中间层来判断,当iterator是class时直接回答,是指针的时候用别的方式回答,这个中间层就是traits

所以为了解决这个问题,traits就用了偏特化来分离,当是pionter或者是const pointer时特化

但是为什么const pointer回答的value_type是T呢,因为问value_type主要就是来声明变量的,用const是常量就无法改变了

traits完整版

posted @ 2023-02-27 20:38  acwarming  阅读(11)  评论(0编辑  收藏  举报