Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode
Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode
C/C++でスレッドを扱う場合は、プラットフォームによって使用するライブラリが違います。 Windows なら Windows API の thread で、 UNIX や Linux 系ならば pthread ライブラリ等を使用します。プラットフォーム依存するコードは可搬性に難があり、解決策の1つとしてプリコンパイルで依存部分をプラットフォームに合わせたライブラリを選択してコンパイルする方法があります。 boost ライブラリの boost::thread は、上のような処理をラップして共通のインターフェイスとして実装されています。 boost/thread.hppの一部 #if defined(BOOST_THREAD_PLATFORM_WIN32) #include <boost/thread/win32/thread.hpp> #elif defined(BOOST_THREAD_
shared_array class template shared_array クラステンプレートは動的に割り当てられた配列へのポインタを保持する。 (動的に割り当てられた配列とは、C++ の new[] によって割り当てられたものである。) shared_array に指されたオブジェクトは、そのオブジェクトを指す最後の shared_array が破棄もしくはリセットされるときに削除されることが保証される。 全ての shared_array はC++標準ライブラリの CopyConstructible (コピーコンストラクト可能)と Assignable (代入可能)の条件を満たすので、標準ライブラリのコンテナで使うことができる。 また、標準ライブラリの連想コンテナで使うことができるように、比較演算子が提供されている。 通常、shared_array は new により割り当てられた
Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode
C++ で乱数、特に正規乱数とか欲しいなあ。 rand() 関数は使っちゃダメ! 絶対! ということらしいので、boost::random を使ってみた。 が、なんでちょこっと乱数が欲しいくらいでそんなややこしいコード書かないといけないの!? と、キレたくなるほど複雑。 同じ型名を何度も書くのとか、ダサダサでしょう…… なので、最小限の汎用性を持たせつつ、便利でお手軽に使えるラッパーを書いてみた。 #include <boost/random.hpp> template<class D, class G = boost::mt19937> class Rand { G gen_; D dst_; boost::variate_generator<G, D> rand_; public: Rand() : gen_(static_cast<unsigned long>(time(0))),
Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode
Boost.勉強会 #3 関西 Boost.懇親会 #3 関西 今回は、オージス総研様を会場に開催させていただきました。 関西でのBoost.勉強会初開催! Boostで3日で作るtwitterクライアント(id:tt_clown, @tt_clown) 動画 : http://www.ustream.tv/recorded/10395531 資料 : 3日で作るtwitterクライアントView more presentations from Tomoaki Tsugawa. BoostでOAuth認証までやるには、まだまだ部品が足りないようですね。 HTTP通信は、作るのはそんなに難しくないですが用意されてたほうが楽なので、Boost.Asioベースのネットワークライブラリ( http://mikhailberis.github.com/cpp-netlib/ )が早くほしいとこです。
2010/10/23 Boost.勉強会 #3 関西 プレゼン資料 .pdf とりあえず upload 版Read less
sample サンプルの動作確認バージョン [GCC4.4/1.41.0] [VC9/1.41.0] #include <string> #include <vector> #include <iostream> #include <boost/shared_ptr.hpp> using namespace std; int main() { typedef boost::shared_ptr<string> StrPtr; StrPtr s = StrPtr(new string("pen")); vector< StrPtr > v; // vectorに入れたり。 v.push_back( StrPtr(new string("this")) ); v.push_back( StrPtr(new string("is")) ); v.push_back( StrPtr(new str
便利な小道具 ここでは知っているとちょっと得する(と思われる)便利な小道具たちをご紹介します。簡単に,しかも手軽に使えるものたちばかりを紹介しますので是非ともマスタしておきたいものです。具体的には以下の4つをご紹介します。 lexical_cast : 数値と文字列の相互変換 format : printfのような形式での出力 timer : 経過時間の計測 foreach : 拡張型forループ lexical_cast C++は型に対して厳しい言語だと言われています。なので,型変換をするときはいろいろと細かいところに気をつけなければいけませんでした。しかし,このlexical_castを使用すれば,そういったわずらわしさから解放してくれます。以下にサンプルコードを載せておきます。 #include <iostream> #include <strin
切実にほしかった参照カウント付きスマートポインタ とりあえず完成です いつも勝手にお世話になってるmeltさんのとこからもらってきたのを boost::shared_ptr風にして機能拡張しました。 #include <functional> // less namespace shand { namespace detail { // shared_ptr<void>を作成するために参照型作成 template<class T> struct shared_ptr_traits { typedef T& reference; }; template<> struct shared_ptr_traits<void> { typedef void reference; }; #if !defined(_MSC_VER) || (_MSC_VER > 1300) // 1300 == VC++
私は「Boostを使って」ではなく「Boostを作って」勉強している 仕事ではBoostを使いたくても使えないことが多いだろう (「フリーのライブラリなんて使っちゃダメ」とか言われて) そこで、Boostの必要なもののみを作って使用している 各機能をヘッダーファイル1本で提供できるので移植もしやすいだろう このブログで紹介したものを以下にまとめる(※随時更新) 【Boost本家】 Boost C++ Libraries Boost C++ Libraries(cppllによる翻訳) 【Boostからの移植】 ・shared_ptr 参照カウント付きスマートポインタ ・shared_array 参照カウント付きスマートポインタの配列版 ・array 固定長配列 ・lexical_cast 数値と文字列の相互変換 ・type_traits 型特性 ・scope_guard ・static_as
Financial Instrument Pricing Using C++ (second edition) An integrated guide to C++ and computational finance This complete guide to C++ and computational finance is a follow-up and major extension to Daniel J. Duffy's 2004 edition of Financial Instrument Pricing Using C++. Both C++ and computational finance have evolved and changed dramatically in the last ten years and this book documents these i
photo credit: Emery_Way 自作: #include <string> #include <vector> #include <iostream> #include <boost/foreach.hpp> /** * split 関数 * @param str 文字列 * @param delim デリミタ * @return 分割された文字列 */ std::vector<std::string> split(std::string str, std::string delim) { std::vector<std::string > result; int start = 0, end; while ((end = str.find_first_of(delim, start)) != str.npos) { // if (end - start > 0) //
VCLのAnsiStringやMFCのCStringと比べて、C++標準の汎用文字列クラスであるstd::stringは機能が貧弱。そいつを補完するのがboostのString Algorithms Library。 以下はその簡単な使い方。 1.trim/trim_copy trim関数は文字列の両端から空白を除去する。trim_copyは空白を除去した結果を返し、文字列そのものには影響を与えない。 #include <string> #include <boost/algorithm/string.hpp> void foo() { std::string ss(" foo "); boost::trim(ss); }2.trim_if/trim_copy_if trim_ifは文字列の両端から条件を満たした部分を除去する。trim_copy_ifはtrim_copy同様、結果のみを返
文字クラス 角カッコ([ ])で囲まれた部分は文字クラス表現となります。 角カッコで囲まれた文字は、「そのいずれかにマッチする」という意味になります。 例えば、 abc[ACD]123 という正規表現に対しては、 abcA123 abcC123 abcD123 はマッチしますが、 abcAC123 abcX123 などはマッチしません。 また、文字クラス内ではハイフン(-)を用いて「範囲」を表すことができます。 例えば、 abc[3-8]123 という正規表現に対しては abc3123 abc4123 ... abc8123 がマッチします。 さらに、ハット(^)を用いて「否定」を表すことができます。 例えば、 abc[^A-Z]123 という正規表現は文字クラス部分が「大文字のアルファベット以外」 を表現しているので、 abca123 abc%123 などがマッチしますが、 abcX12
正規表現ライブラリ ‘Boost Regex++’ の使い方 ‘webを介したプログラムの実行’というアプリケーションの新しい形態が現れ、perl,pythonなどに代表されるスクリプト言語がよく利用されるようになりました。スクリプト言語の多くはテキストすなわち文字列を扱うのを得意としています。 一方C++は文字列を扱うのがあまり得意ではありません。 最近になってようやく文字列を表現するクラスstd::basic_string が標準ライブラリに組み入れられました。 これによって文字列操作を頻繁に行い、かつ移植性の高いアプリケーションの実装がとてもやりやすくなりました。 しかしながら標準の文字列を手に入れたC++でもperlなどのスクリプト言語にかなわないことの一つが’正規表現(regular expression)’です。 たとえばWebの自動巡回を行うアプリケーションを考えてみましょう
C++ 用のライブラリ.汎用的なライブラリの少なかった? C++ にとって,これのおかげで開発がしやすくなったといっても過言ではない.たぶん.ここではBoostに関する詳しい説明は省くので,下記の参考書などを参考にしてもらいたい. 本ページでは,Boostを用いたネットワークの中心性の計算を方法について説明する. ネットワークの中心性とは,ある要素集合と,個々の要素間の関係性から構成されるネットワークにおいて,そのネットワークにおける各要素の重要性を示す指標として,様々なものが提示されている.このネットワークの中心性は,ネットワーク分析や複雑系ネットワークにおいて重要な要素であるが,私自身が始めた当時,大規模なネットワークを対象としたライブラリやツールは提供されていなかった.そこで,実際にネットワークデータをプログラムで扱おうと作成しはじめて見たところ,データ構造や管理,探索など結構面倒で
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く