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を使えば関数ポインタも入れられたり.
うーん,便利.