タグ

ブックマーク / ramemiso.hateblo.jp (3)

  • C++11メモ @ 無くても困らないリソースはstd::weak_ptr - ラーメンは味噌汁

    2013-09-02 C++11メモ @ 無くても困らないリソースはstd::weak_ptr C++11 std::weak_ptrとは 弱い参照のためのスマートポインタ 弱い参照とはリソースの寿命に影響しない参照のことです。 強い参照だけでは循環参照に対応出来なかったり効率が悪いこともあるので使い分けます。 std::shared_ptrとセットで使用する 強い参照はstd::shared_ptrが、弱い参照はstd::weak_ptrが対応します。 std::shared_ptrはリソースが必ず無ければ困る場合に使用し、 std::weak_ptrはリソースが無くても困らない場合に使用します。 参照先のリソースが解放済みか確認できる std::weak_ptrは参照先のリソースの寿命に影響しない代わりに解放済みかどうかを確認できますので処理を変更するなどの対処が可能です。 生

    gin0606
    gin0606 2014/06/04
  • C++11メモ @ 共有したいリソースはstd::shared_ptr - ラーメンは味噌汁

    2013-09-01 C++11メモ @ 共有したいリソースはstd::shared_ptr C++11 std::shared_ptrとは リソースを共有できる 「確保したリソースを誰が開放するのか」という問題を参照カウンタという方式で解決したものです。 共有された場合に+1、共有解除された場合に-1としていき0になった段階で開放します。 使用するメモリ量や処理速度は生ポインタより若干劣る std::shared_ptrはその仕組み上、管理用のメモリとその増減を管理するための処理負荷が必要です。 std::unique_ptrの様にノーコストで使えるというわけではありません。とはいえstd::shared_ptrの速度が問題になることはあまり無いので気にせず使えるレベルです。 リファレンス std::shared_ptr - cppreference.com site/refer

    gin0606
    gin0606 2014/06/04
  • C++11メモ @ std::initializer_listでコンテナクラスの初期化が便利に - ラーメンは味噌汁

    2013-09-12 C++11メモ @ std::initializer_listでコンテナクラスの初期化が便利に C++11 std::initializer_listとは C++11では配列や構造体の初期化で使用していた中括弧"{}"をstd::initializer_listとしてコンパイルされるようになりました。std::initializer_listは読み取り専用のコンテナクラスです。これをコンストラクタで受け取ることで配列の初期化と同じ用にコンテナクラスを初期化できます。また、関数の引数としても受け取ることで要素の追加なども簡単に書けます。 例)std::vector 初期値を0,1,2とし、後から10, 20,30を追加 // 旧 std::vector<int> intVec; intVec.push_back(0); intVec.push_back(1); intV

    C++11メモ @ std::initializer_listでコンテナクラスの初期化が便利に - ラーメンは味噌汁
    gin0606
    gin0606 2014/05/12
  • 1