zoukankan      html  css  js  c++  java
  • STL杂记


    Vector<int> v1(10);

    Vector<int> v2;

    Vector<int>:: iterator iter = v2.begin() ;

    copy(v1.begin(), v1.end(), iter);

     //v.begin(), v.end()之间的数据传给迭代器iter开头的容器                                                                       copy(v.begin(), v.end(),ostream_iterator<int>(cout, ""t"));                    //这回是给ostream_iterator<int>(cout, ""t")了,cout表示标准输出,也就是说把v.begin(), v.end()之间的数据传给cout这个迭代器!!"t表示每输出一个就tab一下。          定义输出流迭代器,STL提供了模板类ostream_iterator。这个类的构造函数有两个参数:一个ostream对象和一个string值。因此可以象下面一样简单地创建一个迭代器对象:ostream_iterator<int>(cout, ""n")该迭代起可以和任何接受一个输出迭代器的函数一起使用。          

                        

    list<int> dList;

    int iArray[5] = { 1, 2, 3, 4, 5 };

    copy(iArray, iArray + 5, front_inserter(dList));

    通过使用front_inserter迭代器对象,可以只用单个copy()语句就完成将iArray矢量中的对象插入到dList链表前端的操作.。注意依次插入最前端,插入之后dList为 5,4,3,2,1

     

    copy(iArray, iArray + 2, inserter(dList, 3));

    将1,2插入到 dlist链表的第二个元素后面,先在5,4,3,2,1第3个元素前面插入1, 变为 5,4,1,3,2,1 然后在它的第三个元素前面插入2 为

    5,4,2,1,3,2,1

     

    advance(p, 2);  //向前移动迭代器 等于 p=p+2

    distance(p, iList.end(), k);  //返回p到最后的距离,保存在k

     

    传递回调函数的例子

    void initialize(long &ri);

    vector<long> v(10);

    for_each(v.begin(), v.end(), initialize);

    //for_each遍历v,分别把v每个值用initialize初始化

    vector<long>::iterator p;

    p = find_if(v.begin(), v.end(), isMinus);

    bool isMinus(const long &ri)

    {

     return (ri < 0);

    }

    //判断v中小于0的值。并返回他的迭代器

    long sum = accumulate(v.begin(), v.end(), 0);

    //v的所有元素求和

    long product =accumulate(v.begin(), v.end(), 1, multiplies<long>());

    //所以元素求集,我们来重点关注一下这句,看看accumulate源代码:

    template<class _II, class _Ty, class _Bop> inline

    _Ty accumulate(_II _F, _II _L, _Ty _V, _Bop _B)

    {

        for (; _F != _L; ++_F)

           _V = _B(_V, *_F);

        return (_V);

     }

    // _F =v.begin() _B= multiplies<long>() 注意这个_B(_V, *_F);自动调用了

    Multiplies的类成员函数

    _Ty operator()(const _Ty& _X, const _Ty& _Y) const 

           {return (_X * _Y);}

  • 相关阅读:
    动手动脑5
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    每周总结
    2020/10/13
    2020/10/20
  • 原文地址:https://www.cnblogs.com/SuperXJ/p/1575255.html
Copyright © 2011-2022 走看看