そろそろ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相当が入らなかった理由が調べられています。
スポンサード リンク |
この記事のカテゴリ
- C++ ⇒ Boost.勉強会 #9 つくば 資料