タグ

C++とc++に関するhecomiのブックマーク (107)

  • スマートポインタのつくりかた - 貳佰伍拾陸夜日記

    2年ちょっと前にC++で書いた非侵入的参照カウント方式のスマートポインタ実装を発掘した. スマートポインタの実装にはC++の様々なマニアックな実装手法が隠れていて面白い. せっかくなので, 解説つきで晒すことにした. このスマートポインタはboost::shared_ptr (以下単にshared_ptr)相当のもので, 当時C++のコードを書かないといけない状況下で「boost使っちゃらめぇぇぇ!」とか言われたために, せめてshared_ptrだけでも抜き出して使おうとしたものの, 依存しているファイルの数が思ったより多くて面倒になったので, 1ファイルで完結する簡易実装を自分で書くことにした, という経緯で生まれたもの. 似たような状況では有用かも知れないし, shared_ptrのソースコードを読む助けにはなるかも知れないけれど, 基的にはboostが使えるなら素直にshared

    スマートポインタのつくりかた - 貳佰伍拾陸夜日記
    hecomi
    hecomi 2010/07/25
  • まぁやりはじめたんですけどね。 - 名古屋313の日記

    C++ | 22:21事の発端は水曜日、合氣道部で晩飯をべていた時。後輩が「隅須さんパンドラバッテリー持ってますか?」と突然聞いてきたんですね。そういうの持ってそうに見えるんですかね。まぁ確かに昔PSPの改造代行やってたこともありますし、パンドラ手持ちにあったこともありますけど流石に今は持ってないんですね。「PSP改造とか東方移植すんぜ!って言ってたとき以来だな」とか呟いたら、「俺、紅魔やったことないから移植してよ」って言い出す同期約一名。期末が近づくと無性にこういうことがやりたくなるもの、早速移植作業開始ですよ。まずは東方紅魔郷を引っ張り出してきて、dat解凍機にかけて画像やら音声を吸い出して、PSPSDKインストール、サンプルとにらめっこして最初の画面表示、キー入力、音楽再生まではひとまずいけました。PSPは一応組み込みっぽい要素?があるのでPCの時と同じノリで作るとすぐにメモリが吹

  • letsboost::format

    sample サンプルの動作確認バージョン [GCC4.4/1.41.0] [VC9/1.41.0] #include <iostream> #include <boost/format.hpp> using namespace std; int main() { // %1%が一番目のパラメータ、%2%が二番目のに置き換わります。 cout << boost::format("%1% %2%") % "hello" % 100 << endl; // printfと同じ書式もOK。 // %05d:0埋めで5桁の整数 %x:16進表記 %f:浮動小数点数 %%:%そのもの cout << boost::format("%05d %x %f %%") % 200 % 255 % 3.33 << endl; // さらに、%2%と%1%を逆順に使うことも cout << boost::for

  • C++ で気軽に時間測定がしたい - iwiwiの日記

    プログラムの一部分の所要時間をちょっと調べたいと思っても,前で時間を調べて,後ろで時間を調べて,引き算したものを出力して,と色々書かねばならず,意外と面倒です. Ruby の benchmark はいいなあと思っていたら,id:tanakh さんの PFI セミナーを思い出したので,それっぽいものを C++ で実現してみました. (2/21 19:30 頃に「もう少し便利に」のバージョンの問題点と解決について追記しました) 例 int main() { benchmark { sleep(1); } benchmark { sleep(2); } } こんな感じで書くと 1.000013 sec 2.000009 sec こんな感じで標準エラー出力に表示. ソースコード これを上に書いておけば OK です. #include <sys/time.h> struct __bench__ {

    C++ で気軽に時間測定がしたい - iwiwiの日記
  • [Boost-users] boost.lambda and std::abs(double)

  • 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 を巡

  • 本物の C++er はデストラクタを書かない - 野良C++erの雑記帳

    代わりに std::unique_ptr (あるいは boost::scoped_ptr )を使います. 何故か? struct hoge { hoge() : xxx( get_resource() ) { /* 処理 */ if( some_cond ) throw some_exception(); /* さらに処理 */ } ~hoge() throw(){ release_resource(xxx); } /* ... */ private: XXX xxx; }; このようなコードで,コンストラクタ中に例外が投げられた場合, デストラクタが呼ばれず,解放漏れが起きるからです. このような露骨な場合でなくても, struct hoge { hoge() : xxx( get_resource() ), yyy() // ここで例外! { } ~hoge() throw(){ re

    本物の C++er はデストラクタを書かない - 野良C++erの雑記帳