insert_iterator分析

本文探讨了insert_iterator,一种迭代器适配器,它扩展了传统迭代器的功能。内容包括insert_iterator内部结构,如目标容器指针和插入位置记录,以及其如何通过调用容器的插入方法来工作。通过对merge函数的实现分析,展示了insert_iterator在实际操作中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

insert_iterator为迭代器适配器,用于封装传统迭代器来提供更为丰富的功能。
insert_iterator内部维护了两个变量:
_Container* container :指向插入的目标容器
_Container::iterator iter:插入位置记录
其实质上就是调用container->insert
源码分析如下:

  template<typename _Container>				// _Container 表示传入的容器类型
    class insert_iterator
    : public iterator<output_iterator_tag, void, void, void, void>		
    {
   
   
    protected:
      _Container* container;				// 定义容器指针,用于保存容器
      typename _Container::iterator iter;	// 定义容器迭代器 it,此迭代器只是普通的输入输出迭代器

    public:
      /// A nested typedef for the type of whatever container you used.
      typedef _Container          container_type;

      /**
       *  The only way to create this %iterator is with a container and an
       *  initial position (a normal %iterator into the container).
      */
	 /**
	  * 使用container和初始位置是创建此迭代器的唯一方式
	  */ 
      insert_iterator(_Container& __x, typename _Container::iterator __i)
      : container(std::__addressof(__x)), iter(__i) {
   
   }   // 初始化container 和 iter


      /**
       *  @param  __value  An instance of whatever type
       *                 container_type::const_reference is; presumably a
       *                 reference-to-const T for container<T>.
       *  @return  This %iterator, for chained operations.
       *
       *  This kind of %iterator maintains its own position in the
       *  container.  Assigning a value to the %iterator will insert the
       *  value into the container at the place before the %iterator.
       *
       *  The position is maintained such that subsequent assignments will
       *  insert values immediately after one another.  For example
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值