• 仿函数和函数配接器


    //
    //  main.cpp
    //  function_adaptor
    //
    //  Created by IDM-PKU on 14-9-3.
    //  Copyright (c) 2014年 PKU. All rights reserved.
    //
    
    #include <iostream>
    #include <set>
    #include <deque>
    #include <algorithm>
    #include "print.hpp"
    
    using namespace std;
    
    int main(int argc, const char * argv[])
    {
    
        set<int,greater<int> > coll1;
        deque<int> coll2;
        for (int i=1; i<=9; ++i) {
            coll1.insert(i);
        }
        PRINT_ELEMENTS(coll1,"initialized: ");
        transform(coll1.begin(), coll1.end(),back_inserter(coll2),bind2nd(multiplies<int>(), 10));
        PRINT_ELEMENTS(coll2);
        replace_if(coll2.begin(), coll2.end(), bind2nd(equal_to<int>(), 70), 42);
        PRINT_ELEMENTS(coll2,"replace: ");
        coll2.erase(remove_if(coll2.begin(), coll2.end(), bind2nd(less<int>(), 50)), coll2.end());
        PRINT_ELEMENTS(coll2,"removed: ");
        return 0;
    }
    

      

    //
    //  print.hpp
    //  function_adaptor
    //
    //  Created by IDM-PKUSZ on 14-9-3.
    //  Copyright (c) 2014年 PKU. All rights reserved.
    //
    
    #ifndef function_adaptor_print_hpp
    #define function_adaptor_print_hpp
    
    #include <iostream>
    
    template <class T>
    inline void PRINT_ELEMENTS(const T & coll, const char * optcstr="")
    {
        typename T::const_iterator pos;
        std::cout << optcstr;
        for(pos=coll.begin();pos!=coll.end();++pos)
            std::cout << *pos << ' ';
        std::cout << std::endl;
    }
    
    
    #endif
    

      透过一些特殊的函数配接器,你可以将预先定义的仿函数和其它数值组合在一起。

    下面是在Mac OS下的运行结果:

  • 相关阅读:
    MFC中实现LISTCRTL控件选中多行进行删除操作
    如何使属性值为“只读”(readonly)的EDIT控件在获取焦点后不显示光标?
    crm 使用stark组件
    ModelForm组件
    自定义admin管理工具(stark组件)
    Django-admin管理工具
    Django-session中间件源码简单分析
    基于角色的权限管理
    ajax参数补充
    datetime模块
  • 原文地址:https://www.cnblogs.com/lakeone/p/3953095.html
Copyright © 2020-2023  润新知