[C++] 分析std::iterator和std::iterator_traits

本文介绍了C++中的std::iterator和std::iterator_traits。std::iterator是一个基类模板,用于简化定义自定义迭代器,包含迭代器类别、值类型、距离类型等模板参数。std::iterator_traits则提供了一个统一接口来访问迭代器的属性,如value_type和difference_type。通过这两个工具,可以更方便地操作和实现迭代器相关的算法。
摘要由CSDN通过智能技术生成

std::iterator和std::iterator_traits


std::iterator

std::iterator是一个模板类,其声明为:

template< 
    class Category,
    class T,
    class Distance = std::ptrdiff_t,
    class Pointer = T*,
    class Reference = T& 
> struct iterator;

std :: iterator是为简化迭代器所需类型的定义而提供的基类。
也就是说当我们写一个模板类时,需要定义自己的迭代器iterator,那么我们可以将std::iterator作为自定义迭代器的基类。

std::iterator的模板参数:

  • Category: 类型为iterator_category ,迭代器的种类。迭代器种类共有5类,参见c++ primer P365。分别是
    输入(input_iterator)
    输出(output_iterator)
    前向(forward_iterator)
    双向(bidirectional_iterator)
    随机访问(random_access_iterator)
    而表示这些迭代器类型的参数分别用 input_iterator_tag
    output_iterator_tag
    forward_iterator_tag
    bidirectional_iterator_tag
    random_access_iterator_tag.
  • T :
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值