2013-01-22 5 views
5

インクルードする必要のあるヘッダファイルの数ができるだけ少ないならば、C++ライブラリは "エレガント"だと思います。固定サイズのアロケータのエレガントなC++実装はありますか?

Loki::SmallObjectAllocatorboost::poolのような既存の固定サイズのアロケータがあることは知っています。どちらも優れていますが、プロジェクトにシームレスに統合するのは簡単ではないと思います。

ほとんどの場合、私はブーストライブラリのほんの一部を必要としますが、私は自分のマシンにライブラリ全体をインストールする必要があります。たとえば、boost :: poolを使用する場合は、ONEヘッダーファイルboost_pool.hを含めるだけで作業が完了します。なぜなら、固定サイズのアロケータはあまりにも多くの他のコンポーネントに依存してはならないと思うからです。私の意見では、理想的なコードは次のようになります:

#include <boost_pool.h> 

int main() 
{ 
    boost::pool<int> p; 
    int* v = p.allocate(); 
} 

このようなライブラリはありますか?

+3

[bcp](http://www.boost.org/doc/libs/1_52_0/tools/bcp/doc/html/index.html)を見ましたか?厳密には同じではありませんが、すべてを単一のヘッダーにするための出発点として簡単に使用できます。 –

+2

"私はちょうど1つのヘッダファイル' boost_pool.h'を含むことを望みます。真剣に。 – Xeo

+0

ありがとうございます。今はbcpを見たことがありますが、使用するのは簡単ではありません。私は、ブーストはあまりにも多くの不要な依存関係があると思う。 – xmllmx

答えて

1

GCCを使用していますか?これは、標準ライブラリを拡張機能として、いくつかの固定サイズのアロケータが付属しています、彼らはあなたが歓迎されている(エレガントわからない、それは私がきちんと自分のコードを見て以来、長い時間です)かなりスタンドアロン

4

http://gcc.gnu.org/onlinedocs/libstdc++/manual/memory.html#allocator.ext

を見ますmineになります。それがエレガントかどうか、あなたが決定することができます。しかし、ほんの2つの小さな標準ヘッダーに依存するのは1つの短いヘッダーです。アロケータは、C++ 11アロケータ要件のサブセットであるC++ 11アロケータ要件を満たしています。必要に応じて、C++ 03ボイラープレートをいつでも追加できます。

+1

Windowsユーザへの注意:ステートフルアロケータは、Visual C++ 2012 November CTPの下でデバッグモードではまだ動作しません。 'std :: allocator_traits :: construct'ではなく' Allocator :: construct'を使うデバッグチェックがいくつかあります – TemplateRex

関連する問題