std::bind*


C++のbindを勉強しました.

なるほどねー.


#include <iostream>
#include <vector>
#include <functional>
#include <algorithm>
#include <boost/fcpp/prelude.hpp>


int main(){

  boost::fcpp::list<int> ls = boost::fcpp::enum_from_to(0, 9);
  std::vector<int> v;
  std::copy(ls.begin(), ls.end(), back_inserter(v));

  std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, ",")); // 0,1,2,3,4,5,6,7,8,9,
  std::cout << std::endl;

  std::vector<int>::iterator it = std::find_if(v.begin(), v.end(), std::bind1st(std::less<int>(), 3));
  int n = std::distance(v.begin(), it);

  std::cout << n << std::endl; // 4

  return 0;

}


別にvector<>に入れる必要はないかもしれないけど.

std::ptr_funを使えば関数ポインタも入れられたり.

うーん,便利.