zoukankan      html  css  js  c++  java
  • 仿函数和函数配接器

    //
    //  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下的运行结果:

  • 相关阅读:
    tkinter 类继承的三种方式
    tkinter 的两个例子
    python 测试驱动开发的简单例子
    python 播放 wav 文件
    Python 操作 MongoDB
    【转】如何拿到半数面试公司Offer——我的Python求职之路
    scrapy 保存到 sqlite3
    scrapy 爬取 useragent
    收集的User-Agent
    scrapy 登录
  • 原文地址:https://www.cnblogs.com/lakeone/p/3953095.html
Copyright © 2011-2022 走看看