zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    常见RGB透明度对照表在这
    Android节假日图标动态替换方案
    用两个栈实现队列
    从头到尾打印链表 (链表/栈)
    MySQL常用函数
    找出数组中重复的数字
    两数之和
    java的list的几种排序写法整理(sort的用法)
    Java知识目录
    通过关键词来推荐话题
  • 原文地址:https://www.cnblogs.com/FlyCat/p/2832949.html
Copyright © 2011-2022 走看看