zoukankan      html  css  js  c++  java
  • STLNormalFunc

    #include <iostream>
    #include <vector>
    
    using namespace std;
    
    void main_1()
    {
        vector<int> vecIntA;//默认构造函数
        vector<int> vecIntB(vecIntA);//调用拷贝构造函数
        
        int iSize=vecIntA.size();//放回容器中元素的个数
        bool isEmpty=vecIntA.empty();//判断容器是否为空
        
        
        //4.比较操作
        bool isEqual= (vecIntB == vecIntA);
        bool isNotEqual= (vecIntB != vecIntA);
    
        cout<< iSize <<endl;
        cout<< isEmpty <<endl;
        cout<< isEqual <<endl;
        cout<< isNotEqual <<endl;
    
        vecIntA.push_back(2);
        cout<<"===================="<<endl;
        {
            int iSize=vecIntA.size();//放回容器中元素的个数
            bool isEmpty=vecIntA.empty();//判断容器是否为空
            
            
            //4.比较操作
            bool isEqual= (vecIntB == vecIntA);
            bool isNotEqual= (vecIntB != vecIntA);
            
            cout<< iSize <<endl;
            cout<< isEmpty <<endl;
            cout<< isEqual <<endl;
            cout<< isNotEqual <<endl;
        }
    /*
    0
    1
    1
    0
    ====================
    1
    0
    0
    1
    Press any key to continue
    */
    }
    
    
    #include<algorithm>
    #include<numeric>
    #include<functional>
    
    bool greaterThan3(int iNum)  
    {  
        if(iNum >3)  
        {  
            return true;  
        }  
        else  
        {  
            return false;  
        }  
    }  
    
    void main_2()
    {
        int data[] = {1,2,4,5,6,8,6,11};  
        vector<int> vecInt(data, data+sizeof(data)/sizeof(int));  
      
        int iCount = count_if(vecInt.begin(), vecInt.end(), greaterThan3);  
        cout<<iCount<<endl;  
    /*
    6
    Press any key to continue
    */
    }
    
    void main_3()
    {
        //bianry_search();//在有序序列中查找value,找到则返回true。注意:在无序序列中,不可使用。
        //例:
        int data[] = {1,2,4,5,6,6,8,11};
        vector<int> vecInt(data, data+sizeof(data)/sizeof(int));
        bool bFind = binary_search(vecInt.begin(), vecInt.end(), 8);
        cout<<bFind<<endl;
        bFind = binary_search(vecInt.begin(), vecInt.end(), 10);
        cout<<bFind<<endl;
        /*
        1
        0
        Press any key to continue
        */
        {
            int data[] = {1,8,2,4,5,6,6,11};
            vector<int> vecInt(data, data+sizeof(data)/sizeof(int));
            bool bFind = binary_search(vecInt.begin(), vecInt.end(), 8);
            cout<<bFind<<endl;
            bFind = binary_search(vecInt.begin(), vecInt.end(), 10);
            cout<<bFind<<endl;
        /*
        0
        0
        Press any key to continue
        */
        }
    }
    
    void main_4()
    {
        //查找指定元素个数:
        //count();//利用等于操作符,把标志范围内的元素与输入值比较,返回相等的个数。
        //例:
        int data[] = {1,2,4,5,6,8,6,11};
        vector<int> vecInt(data, data+sizeof(data)/sizeof(int));
        int iCount = count(vecInt.begin(), vecInt.end(), 6);
        cout<<iCount<<endl;
    /*
    2
    Press any key to continue
    */
    }
    
    
    void main_5()
    {
    //count_if:();//利用输入的函数,对标志范围内的元素进行比较操作,返回结果为true的个数。
    //例:
        int data[] = {1,2,4,5,6,8,6,11};  
        vector<int> vecInt(data, data+sizeof(data)/sizeof(int));  
      
        int iCount = count_if(vecInt.begin(), vecInt.end(), greaterThan3);  
        cout<<iCount<<endl;  
    /*
    6
    Press any key to continue
    */
    }
    
    void main_6()
    {
    //条件查找    
    //find_if();//查找满足条件的元素位置
    //例:
        int data[] = {1,2,4,5,6,3,6,11};  
        vector<int> vecInt(data, data+sizeof(data)/sizeof(int));    
        vector<int>::iterator it = find_if(vecInt.begin(), vecInt.end(), greaterThan3);    
        while(it != vecInt.end())  
        {  
            cout<<*it<<endl;  
            it = find_if(it+1, vecInt.end(), greaterThan3); 
        }  
    /*
    4
    5
    6
    6
    11
    Press any key to continue    
    */
    }
    
    void show(const int &item)  
    {  
        cout << item << " ";  
    }  
    
    int increase(int item)  
    {  
        return item + 1;  
    } 
    
    
    void main_7()
    {
    //2、常用合并算法 
    //加集:
    //merge()//合并:合并容器A和B到容器C。
    //例:
        int arry[]={1,3,5,7,9};
        vector<int> vecIntA(arry , arry+sizeof(arry)/sizeof(int) );//默认构造函数
        vector<int> vecIntB(vecIntA);//调用拷贝构造函数
        vector<int> vecIntBB;
        vecIntBB.resize(vecIntB.size());
        transform(vecIntB.begin(), vecIntB.end(),vecIntBB.begin(), increase);
    
        vector<int> vecIntC;
        vecIntC.resize( vecIntA.size() + vecIntB.size() );
    
        //merge(vecIntA.begin(),vecIntA.end(),vecIntB.begin(),vecIntB.end(), vecIntC.begin());
        merge(vecIntA.begin(),vecIntA.end(),vecIntBB.begin(),vecIntBB.end(), vecIntC.begin());
    
        for_each(vecIntC.begin(), vecIntC.end(), show);
        cout<<endl;
    /*
    1 2 3 4 5 6 7 8 9 10
    Press any key to continue
    */
    }
    
    
    class Student  
    {  
    public: 
        Student():m_id(0),m_name(""){} 
        Student(int id, string name):m_id(id),m_name(name){}  
        Student(const Student & stu):m_id(stu.m_id),m_name(stu.m_name){}  
    public:  
        int m_id;  
        string m_name;  
    };  
      
    bool compare(const Student &stuA, const Student &stuB)  
    {  
        return stuA.m_id<stuB.m_id ? true : false;  
    }  
    
    void main_8()
    {
        //3、常用其他算法
        //排序:
        //sort()//默认升序排序
        //例:
        //sort(vec.begin(), vec.end())
        //自定义排序:
        //sort(beg,end,compare)//按照自定义的规则排序
        //例:
        //srand(time(0));//随机数发生器的初始化  
        vector<Student> vecStudent;  
      
        vecStudent.push_back(Student(3, "小明3"));  
        vecStudent.push_back(Student(5, "小明5"));  
        vecStudent.push_back(Student(2, "小明2"));  
        vecStudent.push_back(Student(1, "小明1"));  
        vecStudent.push_back(Student(4, "小明4"));  
      
        sort(vecStudent.begin(), vecStudent.end(), compare);  
      
        vector<Student>::iterator it;  
        for(it=vecStudent.begin(); it!=vecStudent.end(); it++)  
        {  
            cout << (*it).m_name.c_str() << " ";  
        }
        cout<<endl;
    /*
    小明1 小明2 小明3 小明4 小明5 
    Press any key to continue    
    */
    }
    
    void main_9()
    {
        //颠倒顺序:
        //reverse();//反转原有排序
        //reverse(vec.begin(), vec.end());
        int arry[]={1,3,5,7,9};
        vector<int> vecIntA(arry , arry+sizeof(arry)/sizeof(int) );//默认构造函数
        reverse(vecIntA.begin(), vecIntA.end());
        for_each(vecIntA.begin(), vecIntA.end(), show);
        cout<<endl;
    /*
    9 7 5 3 1
    Press any key to continue
    */
    }
    
    void main_10()
    {
        //拷贝:    
        //    copy();//拷贝容器A的指定区间到容器B
        //例:
        vector<Student> vecStudent;  
        vector<Student> vecStu;  
      
        vecStudent.push_back(Student(3, "小明3"));  
        vecStudent.push_back(Student(5, "小明5"));  
        vecStudent.push_back(Student(2, "小明2"));  
        vecStudent.push_back(Student(1, "小明1"));  
        vecStudent.push_back(Student(4, "小明4"));  
      
        vecStu.resize(vecStudent.size());//需要有默认的构造函数Student()  
        copy(vecStudent.begin(), vecStudent.end(), vecStu.begin());  
      
        vector<Student>::iterator it;  
        for(it=vecStu.begin(); it!=vecStu.end(); it++)  
        {  
            cout<<(*it).m_name.c_str()<<endl;  
        }  
    /*
    小明3
    小明5
    小明2
    小明1
    小明4
    Press any key to continue
    */
    }
    
    void main_11()
    {
        //替换:
        //replace();//将指定元素替换成给定的元素
        //replace(vec.begin(), vec.end(), 3, 10);//将容器中所用等于3的元素替换成10
        //条件替换:
        //replace_if();//替换满足条件的元素
        //例:
        int data[] = {1,2,4,5,6,3,6,11};  
        vector<int> vecInt(data, data+sizeof(data)/sizeof(int)); 
        
        vector<int>::iterator it;  
        for(it=vecInt.begin(); it!=vecInt.end(); it++)  
        {  
            cout<<*it<<"	";  
        }
        cout<<endl;
    
        replace_if(vecInt.begin(), vecInt.end(), greaterThan3, 10);    
        for(it=vecInt.begin(); it!=vecInt.end(); it++)  
        {  
            cout<<*it<<"	";  
        }
        cout<<endl; 
    
        replace(vecInt.begin(), vecInt.end(), 10,3);    
        for(it=vecInt.begin(); it!=vecInt.end(); it++)  
        {  
            cout<<*it<<"	";  
        }
        cout<<endl; 
    /*
    1       2       4       5       6       3       6       11
    1       2       10      10      10      3       10      10
    1       2       3       3       3       3       3       3
    Press any key to continue    
    */
    }
    
    
    void main_12()
    {
        //交换:    
        //swap(vec1,vec2);//交换容器元素
        int arry[]={1,3,5,7,9};
        vector<int> vecIntA(arry , arry+sizeof(arry)/sizeof(int) );//默认构造函数
        vector<int> vecIntB(vecIntA);
        transform(vecIntA.begin(), vecIntA.end(),vecIntB.begin(),increase);
        swap(vecIntA,vecIntB);
        for_each(vecIntA.begin(), vecIntA.end(),show);
        cout<<endl;
        for_each(vecIntB.begin(), vecIntB.end(),show);
        cout<<endl;
    /*
    2 4 6 8 10
    1 3 5 7 9
    Press any key to continue
    */
    }
    
    void main_13()
    {
        //计算和:
        //accumulate(vec.begin(), vec.end(), 100);//计算从vec.begin()到vec.end()的和再加上最后的100
        int arry[]={1,3,5,7,9};
        vector<int> vecIntA(arry , arry+sizeof(arry)/sizeof(int) );
        int sum=accumulate(vecIntA.begin(), vecIntA.end(), 100);
        cout<<sum<<endl;
    /*
    125
    Press any key to continue
    */
    }
    
    void main()
    {
        // 填充:
        // fill(vec.begin(), vec.end(), 100);//将vec里的值全部填充成100
        vector<int> vecInt;
        vecInt.resize(12);
        fill(vecInt.begin(), vecInt.end(), 100);
        for_each(vecInt.begin(), vecInt.end(),show);
        cout<<endl;
    /*
    100 100 100 100 100 100 100 100 100 100 100 100
    Press any key to continue
    */
    }
  • 相关阅读:
    设计模式
    DOS批处理脚本
    BAT 批处理脚本 教程
    spring4配置文件详解
    软件过程
    error C2440 “static_cast” 无法从“void (__thiscall C* )(void)...
    error C2065: “IDD_DIALOG1”: 未声明的标识符
    在另一个编辑器中打开
    Github 结合 Hexo 搭建轻量博客
    收藏---wordpress搭建出来的blog
  • 原文地址:https://www.cnblogs.com/sky20080101/p/6445093.html
Copyright © 2011-2022 走看看