boost勉強中
boostが楽しい
assignとかlambdaとか便利やわ〜。
// -*- coding: utf-8-with-signature-dos -*- //============================================================================== #include <boost/lambda/lambda.hpp> #include <boost/lambda/bind.hpp> #include <boost/assign.hpp> // lambda/bind.hppと一緒にincludeするとboost::lambdaと競合してusing namespaceできない // #include <boost/bind.hpp> #include <algorithm> #include <iostream> #include <vector> using namespace std; using namespace boost::lambda; using boost::ref; using boost::assign::operator+=; int main() { vector<int> num; num += 0, 1, 2, 3, 4, 5, 6, 7, 8, 9; // assign vector<int> num2; auto push_back = (void (vector<int>::*)(const int&))(&vector<int>::push_back); for_each(num.begin(), num.end(), bind(push_back, ref(num2), (_1 * 3 + 5))); // bind cout << "num2: "; for_each(num2.begin(), num2.end(), (cout << _1 << " ")); // lambda cout << endl; return 0; }
出力結果
num2: 5 8 11 14 17 20 23 26 29 32
主にvs10で試していますが、vs9でもautoだけ変えれば動きました。
autoはC++11の機能なので。http://ja.wikipedia.org/wiki/C%2B%2B11
もうしばらく遊んでみる。