zoukankan      html  css  js  c++  java
  • STL 插入迭代器

    目录

      在学习C++ Primer时,我们知道STL有3种插入迭代器,分别是:back_inserter,front_inserter,inserter 。

      • back_inserter:利用push_back在尾部插入元素;
      • front_inserter:利用push_front在头部插入元素;
      • inserter:利用insert在参数it指定位置插入元素;

      3者原型

      #include <iterator>
      
      template <class Container>
        back_insert_iterator<Container> back_inserter (Container& x);
      
      template <class Container>
        front_insert_iterator<Container> front_inserter (Container& x);
      
      template <class Container>
        insert_iterator<Container> inserter (Container& x, typename Container::iterator it);
      

      通过迭代器,对指向的元素调用copy assignment operator (“=”),就能触发x扩展1个新元素。上面3个迭代器都适用。

      示例1

      list<int> v1;
      // v1变成"10 20 30 40"
      auto it = back_inserter(v1);
      *it = 10;
      *it = 20;
      *it = 30;
      *it = 40;
      
      // v1变成"40 30 20 10"
      auto it = front_inserter(v1);
      *it = 10;
      *it = 20;
      *it = 30;
      *it = 40;
      
      // v1变成"10 20 30 40"
      auto it = inserter(v1, v1.begin());
      *it = 10;
      *it = 20;
      *it = 30;
      *it = 40;
      

      插入迭代器经常结合std::copy,用来将一个容器元素拷贝到另一个容器。
      示例2

      list<int> v1 = { 20, 30, 40 }, v2 = { 1, 2, 3, 4, 5, 6 };
      
      // copy调用后 v1为"20 30 40 1 2 3 4 5 6"
      copy(v2.begin(), v2.end(), back_inserter(v1));
      
      // copy调用后 v1为"6 5 4 3 2 1 20 30 40"
      copy(v2.begin(), v2.end(), front_inserter(v1));
      
      // copy调用后 v1为"1 2 3 4 5 6 20 30 40"
      copy(v2.begin(), v2.end(), inserter(v1, v1.begin()));
      
      // v2保持不变
      
    • 相关阅读:
      IfcControlExtension (控件扩展)
      IfcKernel (内核)
      IFC4x0核心层
      IfcSharedMgmtElements (共享管理元素)
      IfcSharedFacilitiesElements (共享设施元素)
      IfcSharedComponentElements (共享组件元素)
      IfcSharedBldgServiceElements (共享建筑服务要素)
      IfcSharedBldgElements (共享建筑元素)
      IFC4x0共享层
      IfcStructuralElementsDomain (结构元素领域)
    • 原文地址:https://www.cnblogs.com/fortunely/p/15690224.html
    Copyright © 2011-2022 走看看