読者です 読者をやめる 読者になる 読者になる

亀岡的プログラマ日記

京都のベッドタウン、亀岡よりだらだらとお送りいたします。

HomebrewでBoostを入れてみた。

C++

Macの定番apt-getであるところのHomebrewでBoostも入れてみました。

多分去年年末番くらいを使ってると、SHA-1不一致のエラーが出るので、とりあえずアップデートしましょう。

$ brew update

んで、そのまんまboostのインストールでOKです、

$ brew install boost

2012/03/04現在では、boost 1.49が入るようですね。

さて、それではXcodeで使ってみましょう。と言ってもやることは殆ど無くて、こんな感じでインクルードパスを通してやればいいです。

/usr/local/Cellar/boost/1.49.0/include
/usr/local/Cellar/boost/1.49.0/lib

ちなみにRecursiveにチェックをつけると謎のエラーが大量出現したので、付けないほうがいいです。


さてさて、んじゃあなんか使ってみましょうか。ていうかBoostを入れた目的はClang未対応のラムダ式だったので・・・

上のページから簡易的に引っこ抜いてきます。

#include <iostream>
#include <vector>
#include <algorithm>
#include <boost/lambda/lambda.hpp>


using namespace std;

int main (int argc, const char * argv[])
{
    using namespace boost::lambda;
    
	vector<int> vec;
	vec.push_back(10);
	vec.push_back(23);
    vec.push_back(150);
	vec.push_back(45);
	vec.push_back(76);
	vec.push_back(98);
    
    
    //5で割りきれて30以上の数を探す
	vector<int>::iterator it =
    find_if( vec.begin(), vec.end(), _1%5==0 && _1>30 );
    
    cout << "found:" << *it << endl; //found:150
    
    return 0;
}

うーん。。。第n引数を__nと表現するんですね・・・。これはなんというか、なんというかですねww

当然、関数オブジェクトにも入ります。
参考

     //f(x) = x^2 - 3x + 2
    boost::function<double(double)> f = _1*_1 - 3*_1 + 2;
    //3を代入して計算
    cout << f(3) << endl; // 2

うーん、なんというか、なんというか、きしょくわるいなあもう!!w