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保持不变
    

    原文链接: https://www.cnblogs.com/fortunely/p/15690224.html

    欢迎关注

    微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

    也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

      STL 插入迭代器

    原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/402811

    非原创文章文中已经注明原地址,如有侵权,联系删除

    关注公众号【高性能架构探索】,第一时间获取最新文章

    转载文章受原作者版权保护。转载请注明原作者出处!

    (0)
    上一篇 2023年4月21日 上午11:14
    下一篇 2023年4月21日 上午11:14

    相关推荐