ホーム » スタッフ » 斉藤徹 » C++にてboost体験

2011年1月
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

検索・リンク

C++にてboost体験

C++の再学習にて、「C++クックブック」を見ているんだが、ライブラリにてboostの事例も多い。 んで、調べていると、昨日書いていたc++0xを使ったvectorの初期化だけど、 boost だと、boost::assign::list_of なんてぇ~のを使うと、c++0xを使わなくても書けちゃう。

#include <iostream>
#include <vector>
#include <boost/assign/list_of.hpp>
using namespace std ;
int main() {
// 初期化リストの要素が() で囲まれているのがポイント、
// operator()() の演算子オーバーライドで実装しているみたい。
vector<int> v = boost::assign::list_of (1) (2) (3) ;
for( vector<int>::iterator it = v.begin() ;
it != v.end() ;
it++ ) {
cout << *it << endl ;
}
}

変態チックだな…当然、bitset<8>でも動くぜ…変態…

昨日は、c++0xのラムダ計算を試した(gcc4.5入れてなくって、コンパイルでけんかったけど) けど、boost にもラムダ計算がある…。 g++側に依存しないという意味では、boost の方が便利だけど、ここまでいくとなぁ… 参考サイト見つけたけど、さらに変態度が増している。

#include <iostream>
#include <vector>
#include <boost/assign/list_of.hpp>
#include <boost/lambda/lambda.hpp>
#include <boost/lambda/bind.hpp>
int sum = 0 ;
int main() {
using namespace std ;
using namespace boost::lambda ;
vector< int > v = boost::assign::list_of ( 1 ) ( 2 ) ( 3 ) ;
for_each( v.begin() , v.end() , sum += _1 ) ;
cout << sum << endl ;
}

追記:んでも、使う前にBoostのインストール。Mac と Debian にもいれてみた。

(( Mac OS X ))
# fink list | grep boost
# fink install boost1.35.systempython
## boost-jam,boost1.35.systempython,
## boost1.35.systempython-shlibs がインストールされる。
(( Debian GNU/Linux ))
# aptitude search boost
# aptitude install boost-all-dev
## debianでは様々なライブラリが細かくパッケージ化されている。
## 何を使うか解らないので、ともかく全部いれてみた。
## 変態な、boost/lambda も入っちゃう。

システム

最新の投稿(電子情報)

アーカイブ

カテゴリー