動的確保を一切使わない STL 互換コンテナ

MMU の存在しないハードウェアに対してのプログラム ( 多くの場合、組み込み系のプログラム ) においては、メモリの断片化が現在においても問題です。頻繁に動的確保を行う STL コンテナの利用は組み込み分野では倦厭されます。僕は、この問題に対して、様々なアプローチを試みてみたものに一人なのですが、今回、考え方を 180°変えてみることにしました。時代の流れ逆行し、動的確保を一切使わない STL 互換コンテナを作ってみることにしました。それが、今回ご紹介する static_container です。仮想関数などもで極力使用していないため、vector, string はそのままバイナリファイルに書き出し、読み込むことが可能です(なんせ、中身は全部ただの配列ですから)。

用途としては、こんなのが考えられます。

  • あらかじめ割り振られた領域を STL コンテナとして便利に利用
    • 領域サイズを後から変更可能
  • string をファイルヘッダとして利用
    • ファイルを表す識別子(拡張子)等を文字数制限つきでヘッダに埋め込みたい場合
    • 素直に char[] の代替品として...

【static_container::vector の 例】

#include 

using namespace static_container;
vector< int, 10 >   c; // int のベクター ( 最大サイズ 10 )
c.max_size(); // = 10
c.size(); // = 0
c.push_back( 5 ); // 5 を末尾に挿入
c.size(); // = 1
c.pop_back(); // 削除
c.size(); // = 0

他に、

  • list
  • hash
  • string

があります。

【ダウンロード】

(2004/4/20 修正)
以下の URL から、

http://proxy.ymdb.yahoofs.jp/users/f92ebc28/bc/static_container/2004-4-19.zip?bc5TZ1ABEAU69bl4

2004-4-19.zip を落としてもらうと、読めるはず!!!