タグ

C++とBoostに関するbabydaemonsのブックマーク (15)

  • 実践C++応用講座 第29回 マルチプラットフォームなスタック・トレースその2 | Theolizer®

    こんにちは。田原です。 前回はboostライブラリに含まれるスタック・トレース機能の基的な使い方を解説しました。前回の使い方は通常のコンテキストで使用できます。しかし、スタック・トレースはもっとクリティカルなコンテキストでも使いたいです。特に「ぬるぽ」などの不正メモリ・アクセスが発生した時がその筆頭と思います。これはSIGSEGV等のシグナルで捕まえることができますが、このシグナル・ハンドラーのコンテキストはかなり特殊でできないことが盛りだくさんです。その中でのスタック・トレースのとり方について解説します。 1.まずはboostのドキュメントから Handle terminates, aborts and Segmentation Faultsにシグナル発生時のスタック・トレースのとり方が解説されています。 ポイントは、シグナルは非同期に発生する「割り込み」処理なのでスタック・トレースの

    実践C++応用講座 第29回 マルチプラットフォームなスタック・トレースその2 | Theolizer®
  • 実践C++応用講座 第28回 マルチプラットフォームなスタック・トレース | Theolizer®

    (実際にはこの前後にもう少し履歴がありますし、ビルド・モードによって内容が異なります。詳しくは後述します。) さて、上記プログラムのbar()関数でスタック・トレースを出力することを知っているので意味付けできますが、どこでスタック・トレースを出力したのか知らない時(普通はこちらです)、単なるアドレスのリストを見ても何が何やら分からないですね。 そこで、コード内のアドレスとソースの位置を対応付けるためのデバッグ用シンボルを利用して、上記アドレスをソースへ対応付けることができます。例えば、次のような出力を得られます。 1# bar at c:\cpp-school2\12.stack_trace\stack_trace.cpp:36 2# foo at c:\cpp-school2\12.stack_trace\stack_trace.cpp:42 3# main at c:\cpp-scho

    実践C++応用講座 第28回 マルチプラットフォームなスタック・トレース | Theolizer®
  • Boost 数学関係ライブラリの使い方

    boost::numeric::ublas 線形代数ライブラリの使い方 連立方程式を解く・逆行列を求める DT Specials -> Boost -> boost::numeric::ublas 線形代数ライブラリの使い方 Last update : Jan. 13th, 2005 はじめに この文書は,線形演算ライブラリ boost::numeric::ublas の使い方の一部を簡単に説明したものです. どうも boost ― uBLAS については日語の説明書きがないようです.頼みの日語解説書[2]も uBLAS はたった 2 ページ.Web をあさっても私の希望にあう解説は見あたりません.仕方がないので英語のオリジナルドキュメントと格闘しました.その結果,なんとか連立1次方程式を解くことと,逆行列を求めることはできるようになったので,私と同じようなお悩みを抱えて Web を巡

  • 文字列と相互変換できる列挙型(enum) - kryozahiro’s diary

    stringとenumを双方向で変換できてかつPODなのが欲しくなったので書きました。内部の変換テーブルにはboost::bimapを使っています。 特徴としては 双方向に変換できる 実行時 POD型 boost::bimapなので速い(後述) などです。 使用例 ENUM_UTILの実装は(長いので)記事の最後にあります。 #include <iostream> #include "EnumUtil.h" using namespace std; //文字列変換できるenum ENUM_UTIL(Number, ZERO, ONE, THREE = 3, ); //クラス内にも定義可能 class MyClass { ENUM_UTIL(Fruit, APPLE, BANANA, ORANGE); }; int main() { //文字列との相互変換 Number zero = Num

    文字列と相互変換できる列挙型(enum) - kryozahiro’s diary
    babydaemons
    babydaemons 2016/02/25
    C++でこういうの、面白い!
  • Boost Tour 1.50.0 All

    “Design and Implementation of Generics for the .NET Common Language Runtime”他...Masahiro Sakai

    Boost Tour 1.50.0 All
  • 株式会社エス・スリー・フォー » ‘置換’はどうやればいいのですか?

    ‘置換’はどうやればいいのですか? そうですよね、’検索’ができたならその次は’置換’でしょう。置換すなわち文字列のある部分を他の文字列で置き換えるのは、単なる’検索’より少しばかり複雑です。 charやwchar_t配列を文字列として用いている場合、’置換’はひどく面倒な処理が必要となります。’置換’によって文字列の長さが変わらないのなら何の問題もないのですが、文字列の一部をより短い文字列で置き換える場合、置き換える箇所の後ろに続く部分を短くなった分だけ前に詰めなくてはなりません。また、より長い文字列で置き換える場合、置き換える箇所の後ろに続く部分をより後ろにズラさなくてはなりません。困ったことにcharやwchar_t配列の長さを知ることができませんから、置換による領域あふれの危険が常につきまといます。 それに対し標準C++ライブラリが提供する文字列クラスstd::basic_stri

    babydaemons
    babydaemons 2013/09/14
    Boost勉強しないとなー
  • RAII - Wikipedia

    RAII(Resource Acquisition Is Initialization)は、日語では「リソース取得は初期化である」「リソースの確保は初期化時に」「リソースの取得と初期化」などの意味を持ち、資源(リソース)の確保と解放を、クラス型の変数の初期化と破棄処理に結び付けるというプログラミングのテクニックである。特にC++とD言語で一般的であり、デストラクタをサポートしないC言語などに対する優位性や利便性のうちのひとつとなっている。 RAIIでは、資源の取得をクラス型変数の構築(初期化)時に、また返却を破壊時に行う。特にプログラムの制御フローが自動変数の属するブロックを抜けるとき、その変数のデストラクタが自動的に呼ばれるため、デストラクタを適切に記述したクラス型変数の寿命が終わるとすぐに資源が返却されることが保証できるようになる。これは例外が発生したときでも同様であるため、RAII

    babydaemons
    babydaemons 2012/08/22
    当たり前の習慣にこのような名前があったとは。
  • BoostでC++0xのライブラリ「TR1」を先取りしよう (1)

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    BoostでC++0xのライブラリ「TR1」を先取りしよう (1)
  • BoostでC++0xのライブラリ「TR1」を先取りしよう (5)

    はじめに C++の新しい規格「C++0x」では、言語とライブラリの両面から便利な機能が追加されます。「TR1」(Technical Report 1)はC++0xのライブラリ部で、標準C++に新たに追加されるライブラリの多くはBoostの中から選ばれたものです。2008年春にリリースが予定されているVisual Studio 2008にも追加パッケージとして供給されるとの情報を得ています。 TR1に収録されたクラス/関数の中からいくつかをピックアップし、その概要と使い方を予習しておきましょう。これまでの一連の「TR1」解説ではBoostの実装を使ってきましたが、今回紹介する unorderedコンテナはBoostには含まれていません。そのため前述の追加パッケージ、Visual C++ 2008 Feature Pack Betaを使います。Feature Pack Betaは現時点では英語

    BoostでC++0xのライブラリ「TR1」を先取りしよう (5)
  • http://takagi.in/modules/devenv1/

  • 研究日誌: MinGWでboost

    2008年3月2日 MinGWでboost boostは次のC++の標準になると言われているC++用ライブラリです. 正規表現など色々なライブラリが揃っていて非常に便利です. インストール方法はこの辺を参照してください.基的にはインクルードパスを通してヘッダファイルをインクルードするだけです. しかしながら,一部ライブラリファイルにリンクを張る必要がある上,そのライブラリファイルは自分で作成する必要があります. というわけで作成メモ. 1.ここからboost_1_34_1.zipとboost-jam-3.1.16-1ntx86.zip,boost-jam-3.1.16をダウンロードしてきて解凍. 2.解凍したboost_1_34_1フォルダに残り2ファイルを解凍した中身をそっくりコピー. 3.コマンドプロンプトでboost_1_34_1に移動して,以下のコマンドを叩く. この際,注意事項

  • boostインストールメモ(MinGW) - やんち研究所 @ ウィキ

    事前にMinGWがセットアップされている必要があります。 使用した環境: MinGW「gcc (GCC) 3.4.2 (mingw-special)」 OS「Microsoft Windows 2000 [Version 5.00.2195]」

    boostインストールメモ(MinGW) - やんち研究所 @ ウィキ
  • Boostのインストール

    今回はMinGW環境下にBoostをインストールしてみます。 Boostの多くはテンプレートとして提供されていますが、正規表現ライブラリ(regex)等、ライブラリを必要とするものもあります。 今回は正規表現ライブラリ(regex)の使用を考慮にいれインストールしてみます。 Boost 1.33.1 のインストール Boost 1.33.1 の入手 BoostはBoostのホームページのダウンロードページ からダウンロードできます。SourceForgeよりのダウンロードになります。 File Releases から boost_1_33_1.zip と boost-jam-3.1.11-1-ntx86.zip をダウンロードします。 boost_1_33_1.zip は boost体です。boost_1_33_1.exe(自己解凍形式の圧縮ファイル)でもかまいません。 boost-ja

  • BoostのVisual Studio Debugger Visualizers - Faith and Brave - C++で遊ぼう

    Visual Studioには2005からDebugger Visualizersという機能がこっそり入っていて そのおかげでSTLコンテナの状態がデバッグウィンドウで見やすくなっています。 デフォルトでDebugger Visualizersが有効になっているので、 vectorをデバッグしてみると以下のようにデバッグウィンドウに表示されます。 Debugger Visualizersを無効にした場合は以下のように表示されます。 これを見れば、Debugger Visualizersのおかげでどれだけ見やすくなっているかがわかると思います。 なんだかよくわからない値ではなく、要素数と要素がはっきりわかるようになっています。 Debugger Visualizersは、コンパイラに同梱されたライブラリのみに適用されるだけでなく ユーザー定義のライブラリにも適用することができます。 Visu

    BoostのVisual Studio Debugger Visualizers - Faith and Brave - C++で遊ぼう
  • Let's Boost - インストール方法

    インストーラやパッケージを使う方法 一番簡単な方法です。コマンド一発でインストール完了です。 ただし、下記以外の開発環境や、最新バージョンリリース直後などは、 パッケージ化が追いついていないことがあります。 その場合手動での Boost のダウンロードやビルド、設定が必要になります。 → 手動インストール Visual C++ の場合 Visual C++ 7.1~10.0 用のインストーラが boostpro で公開されています。 ビルド済みライブラリが自動インストールできます。 Cygwin gcc の場合 CygwinのインストーラでBoostを一緒にインストールできます。 「Devel」カテゴリの「boost」と「boost-dev」を選択してください。 UNIX系環境の場合 大抵のディストリビューションでパッケージ化されているようです。 yum install boost boo

  • 1