そろそろ1ヶ月近く前と言っても間違いではない頃になりましたが、Boost.勉強会 #9 つくばで発表しました。

資料はこちらです。このたびよりCC BY-SA 2.1 JPでライセンスすることを明記することにしました。

全部取り上げるのは無理だと考え、取り扱うライブラリを取捨選択したのですが、これはこれで難しいです。


当日shared_ptrで配列を扱えないのか質問がありましたので、その件についてここに書いておきます。

まず、Boostのようなshared_arrayは存在しません。その代わりとして、shared_ptrで配列を扱うことは一応可能です。delete[]を呼ぶようにすることは可能ですが、[]演算子など配列特有の操作は不可能です。

#include <memory>
#include <iostream>
 
int main()
{
  using namespace std;
  shared_ptr<int> p(new int[4]{1, 2, 3, 4},
    default_delete<int[]>());
  // あるいは下のように書いても同じ
  // shared_ptr<int> p(new int[4]{1, 2, 3, 4},
  //   [](int* p) {delete[] p;});
  cout << p.get()[3] << endl; // 4
}

getメンバ関数を使うと生のポインタを取り出せるので、そこから[]演算子を適用することになります。

追記:std::shared_ptrで動的配列を扱う – Faith and Brave – C++で遊ぼうとそのコメント欄でshared_array相当が入らなかった理由が調べられています。

スポンサード リンク

この記事のカテゴリ

  • ⇒ Boost.勉強会 #9 つくば 資料