• C++ 插入迭代器,算法使用


    #include<iostream>
    #include<vector>
    #include<string>
    #include<numeric>
    #include<algorithm>
    #include<iterator>
    using namespace std;
    bool isDivided2(int num)
    {
        return num%2==0;
    }
    int main(int cnt,char *argv[])
    {
        
        int l[5]={1,3,3,4,6};
        int findl[1]={10};
        cout<<accumulate(l,l+5,0)<<endl; //累加,第三个参数用于指定初始值和推断返回类型
        //输出17
    
        cout<<(find_first_of(&l[0],&l[5],&findl[0],&findl[1])!=&l[5])<<endl;;
        //输出0,即没找到
    
        int *endp=unique(l,l+5); //数组元素被移动,前N个都是唯一元素,返回N+1的位置
        for (int i=0;i<5;i++)
        {
            if(&l[i]==endp)
                cout<<"#";
            cout<<l[i];
        }
        cout<<endl;//输出1346#6 6被复制到前面,所以多出一个6
        
        cout<<"find_if Test\n";
        vector<int> lv(l,l+5);
        vector<int>::iterator itr=lv.begin();
        while ((itr=find_if(itr,lv.end(),isDivided2))!=lv.end()) //找出所有能被2整除的数
        {
            cout<<*itr;
            ++itr;
        }
        cout<<endl; //输出466
    
        //插入迭代器
        //back_inserter front_inserter inserter
        cout<<"back_inserter Test\n";
        vector<int> v;
        cout<<v.size()<<endl;//0
        back_insert_iterator<vector<int>> t=back_inserter(v);
        fill_n(back_inserter(v),10,1);//要动态增加迭代器大小,可以用back_inserter包装
        cout<<v.size()<<endl;//10
        
        cout<<"replace_copy Test\n";
        int nl[5];//l:[1,3,4,6,6]
        replace_copy(l,l+5,nl,3,1); //将源迭代器范围内元素复制到新范围内,值为3的替换为1
        for(int i=0;i<5;i++)
            cout<<nl[i];
        cout<<endl;//11466
        
        return 0;
    }
  • 相关阅读:
    自考 exec 7 3
    画函数图像
    Exec68
    applet main共存 五角星和五面形
    jcheckbox 用例
    JList 单击 ,双击例
    web性能优化(一)弱请求处理
    web性能优化(二)优化思维图
    算法之道左右旋转字符串
    腾讯微信面试题实现时间复杂度为O(1)的栈 20130226
  • 原文地址:https://www.cnblogs.com/FlyCat/p/2832949.html
Copyright © 2020-2023  润新知