タグ

ブックマーク / gintenlabo.hatenablog.com (4)

  • 配列の make_shared - 野良C++erの雑記帳

    C++0x の std::shared_ptr を使う場合は, std::make_shared を使うことによって,普通にポインタを new する場合より効率が良く,また安全なコードが書けます: int main() { auto p = std::make_shared<std::string>( "hoge" ); // std::shared_ptr<std::string> p( new std::string("hoge") ); より効率がよく, // また(ここでは詳しく説明しないが)例外安全で,タイプ数も少ない! } しかし,これには,配列版が存在しません. もっと言うなら,「実行時に大きさの変化する領域」は, make_shared では普通には確保できません. もちろん,普段は std::vector を使えばいいので,特に問題にはなりませんが,効率を極限まで突き詰め

    配列の make_shared - 野良C++erの雑記帳
    lizy
    lizy 2011/08/01
  • C++0x 標準ライブラリ完全解説 まとめ - 野良C++erの雑記帳

    No.00 Introduction (2011-01-07 更新) No.01 namespace rel_ops, utility (2011-01-07 更新) No.02 std::move, utiliy (2011-01-16 更新) No.03 std::move_if_noexcept, utiliy (2011-01-17 更新) No.04 std::swap, utiliy (次回予定)

    C++0x 標準ライブラリ完全解説 まとめ - 野良C++erの雑記帳
  • それでも Boost.Optional を使う、大きく分けて2つくらいの理由 - 野良C++erの雑記帳

    Boost.Optional Must Go - 野良C++erの雑記帳 Boost.Optional Must Go (2) - 野良C++erの雑記帳 最近、何回かに分けて、 Boost.Optional について、(細かい)不満を日記に書いてきました。 これは別に Boost.Optional が嫌いだから不満を書いた訳ではなく、むしろ その逆、 Boost.Optional が便利な分、逆に不満点が目立つので書いていたわけですが、 よく考えたら、 Boost.Optional の便利さを、纏まった記事で書いていないなー、 と、そう思い至ったので、この辺で Boost.Optional を徹底的に推奨する記事でも書いてみようかな、 というわけで、さんざん既出なネタばかりですが、折角なので書いてみることにしましたよ。 冒頭に挙げた以外で参考になるような記事は、この辺でしょうか: C++

    それでも Boost.Optional を使う、大きく分けて2つくらいの理由 - 野良C++erの雑記帳
  • C++でデストラクタを呼ばなくていい条件 - 野良C++erの雑記帳

    参考: デストラクタを呼ばずに再構築 - melpon日記 - HaskellもC++もまともに扱えないへたれのページ C++ では、動的に確保したメモリ領域にオブジェクトを構築した場合、 確保した領域を解放する前に、デストラクタを呼び出す必要があります: // 何らかの理由で new 以外の方法でメモリ確保する必要がある場合 // メモリ確保し、オブジェクトを構築する(todo:例外安全) void* const vp = allocate_memory( sizeof(T) ); T* const p = ::new(vp) T(); // 何らかの処理 // デストラクタ呼び出し p->~T(); // 解放 free_memory( vp ); 普通に C++ を使うだけであれば、動的メモリ確保は new/delete を使えばいいし、 そもそも unique_ptr とか sha

    C++でデストラクタを呼ばなくていい条件 - 野良C++erの雑記帳
    lizy
    lizy 2010/05/12
  • 1