C + +: Boost 사용 방법 (함수 대상)

14597 단어 C++
참고 자료:http://zh.highscore.de/cpp/boost/
Boost 방법
함수 대상
  • Boost.Bind
  • Boost.Ref
  • Boost.Function
  • Boost.Lambda

  • 함수 개체
    고급 함수 라 고도 할 수 있 습 니 다. ☞ 다른 함수 나 다른 함수 에서 되 돌아 올 수 있 는 함수 입 니 다.
    Boost.Bind
    위치:boost/bind.hpp
    Boost. Bid 는 서로 다른 함수 간 의 바 인 딩 을 간소화 합 니 다. boost: bid () 템 플 릿 함수 만 포함 합 니 다.
    설명:
    boost:: bid 에는 자리 차지 문자 가 포함 되 어 있 습 니 다. 예 를 들 어1、_2 와3. 자리 표시 자 를 통 해 boost:: bid 는 1 원, 2 원, 3 원 함수 로 변 할 수 있 습 니 다.
    예:
    #include <boost/bind.hpp> 
    #include <iostream> 
    #include <vector> 
    #include <algorithm> 
    
    void add(int i, int j) 
    { 
      std::cout << i + j << std::endl; 
    } 
    
    int main() 
    { 
      std::vector<int> v; 
      v.push_back(1); 
      v.push_back(3); 
      v.push_back(2); 
    
      std::for_each(v.begin(), v.end(), boost::bind(add, 10, _1)); 
    }
    

    Boost.Ref
    위치:boost/ref.hpp
    Boost. Ref 는 두 가지 함수 boost: ref () 와 boost:: cref () 를 포함 합 니 다.
    설명:
    boost:: bid () 가 인 자 를 인용 해 야 할 때 boost: ref () 를 사용 할 수 있 습 니 다. 상수 대상 을 참조 해 야 할 때 boost: cref () 를 사용 할 수 있 습 니 다.
    예:
    #include <boost/bind.hpp> 
    #include <iostream> 
    #include <vector> 
    #include <algorithm> 
    
    void add(int i, int j, std::ostream &os) 
    { 
      os << i + j << std::endl; 
    } 
    
    int main() 
    { 
      std::vector<int> v; 
      v.push_back(1); 
      v.push_back(3); 
      v.push_back(2); 
    
      std::for_each(v.begin(), v.end(), boost::bind(add, 10, _1, boost::ref(std::cout))); 
    } 
    

    Boost.Function
    위치:boost/function.hpp
    Boost. Function 은 boost:: function 의 종 류 를 패키지 함수 포인터 로 제공 합 니 다.
    설명:
    boost:: function 은 특정한 서명 을 가 진 함 수 를 가리 키 는 지침 을 정의 할 수 있 습 니 다. 예 를 들 어 type 1 을 가리 키 는 매개 변 수 를 가리 키 고 type 2 를 가리 키 는 함수 입 니 다.이 지침 은 서명 과 일치 하 는 함 수 를 가리 킬 수 있 으 며, 데이터 형식 은 정확하게 일치 할 필요 가 없습니다.
    예:
    #include <boost/function.hpp> 
    #include <iostream> 
    
    struct world 
    { 
      void hello(std::ostream &os) 
      { 
        os << "Hello, world!" << std::endl; 
      } 
    }; 
    
    int main() 
    { 
      boost::function<void (world*, std::ostream&)> f = &world::hello; 
      world w; 
      f(&w, boost::ref(std::cout)); 
    } 
    

    Boost.Lambda
    위치:boost/lambda/lambda.hpp
    Boost. Bid 와 유사 하 게 Boost. Lambda 도 세 개의 자리 표시 자 를 각각 로 정의 했다.1, _2 와3
    예:
    #include <boost/lambda/lambda.hpp> 
    #include <iostream> 
    #include <vector> 
    #include <algorithm> 
    
    int main() 
    { 
      std::vector<int> v; 
      v.push_back(1); 
      v.push_back(3); 
      v.push_back(2); 
    
      std::for_each(v.begin(), v.end(), std::cout << boost::lambda::_1 << "
    "
    ); }

    좋은 웹페이지 즐겨찾기