iterator 的一些特殊用法

iterator 的一些特殊用法

本文章基于 VS2019 创作。

std::iterator 这是一个基类模板,可用于从其派生迭代器类。它不是迭代器类,并且不提供迭代器应具有的任何功能。

该基类仅提供了一些构件类型,这实际上是不存在于任何迭代器类型(迭代器类型没有具体的构件的要求)所需的,但由于它们限定所需默认成员,他们可能是有用的,iterator_traits 类模板自动生成适当的实例(并且这样的实例化是必需适用于所有的迭代器类型)。

std::iterator 被定义为:

template <class Category, class T, class Distance = ptrdiff_t, class Pointer = T*, class Reference = T&>
struct iterator {
   
    typedef T         value_type;		//元素的类型
    typedef Distance  difference_type;	//两个迭代器之间的距离
    typedef Pointer   pointer;			//元素的指针
    typedef Reference reference;		//元素的引用
    typedef Category  iterator_category;//迭代器类型
};

itertor 在 vector const iterator 中的实际运用:

template <class _Myvec>
class _Vector_const_iterator : public _Iterator_base {
   
public:
#ifdef __cpp_lib_concepts
    using iterator_concept = contiguous_iterator_tag;
#endif // __cpp_lib_concepts
    using iterator_category = random_access_iterator_tag;
    using value_type        = typename _Myvec::value_type;
    using difference_type   = typename _Myvec::difference_type;
    using pointer           = typename _Myvec
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值