static_vector using aligned_storage
static_vector: fixed capacity vector update
ソースコード: http://svn.boost.org/svn/boost/sandbox/varray/
現在、BoostのSandbox上で、フリーストア(ヒープ)を使わない可変長配列の開発が進められています。
このコンテナは、テンプレートパラメータで決定した容量に基いて、静的なサイズの配列を内部的に持ち、その配列に対して配置newすることで可変長配列を実現します。
使い方は以下のようになります。
#include <iostream> #include <boost/container/varray.hpp> int main() { // intの可変長配列を定義。最大要素数は3 boost::container::varray<int, 3> v; // size: 0 // 末尾に要素を追加 v.push_back(1); // size: 1 v.push_back(2); // size: 2 v.push_back(3); // size: 3 // v.push_back(3); // 最大容量をオーバーしたので、assertもしくは未定義の振る舞い // 末尾要素を削除 v.pop_back(); // size: 2 for (int& x : v) { std::cout << x << std::endl; } }
1 2
最大容量を最初に決めて、それを超えないように追加&削除操作を行います。
このクラスは、テンプレートパラメータを除いて、std::vectorと同じインタフェースを持っています。