1

組み込みプログラムには、表示するアイテムのリストを管理する必要がある画面オブジェクトがあります。アイテムの最初のリストは、画面の読み込み時に単純な DB から取得され、リストは「追加」および「削除」イベントによって更新されます。このリストは、特定の基準に従ってソートする必要があります。これを実現するのに役立つコンテナ クラスを探しています。さらに、システムには動的メモリがないため、空のアイテムのメモリ プールが必要です。これをコンテナにロードし、アイテムの処理が終わったら空きプールに戻すことができます。

C++ 標準ライブラリまたは Boost で適切なものを知っている人はいますか? それとも別の解決策ですか?

4

2 に答える 2

3

STL を使用せずに、独自のアロケーターとデアロケーターを提供します。たとえば、STL ベクトルが として定義されているtemplate<class T,class A = std::allocator<T>> vector {}場合、メモリ プールからメモリ空間を要求する独自のアロケーターを作成および設定できます。

メモリ アロケータについては、Hoard http://www.hoard.org/や Ned Allocator http://www.nedprod.com/programs/portable/nedmalloc/などの既存のメモリ アロケータを使用します。これは非常に高性能で優れています。組み込みシステム向け。

于 2010-03-09T13:01:24.427 に答える
1

標準コンテナ (std::mapまたは などstd::set) を使用する場合は、さまざまな動的割り当てについて考慮する必要があります。内部コンテナ データ構造の割り当てと、コンテナに保存する独自のデータの割り当てです。内部データ構造の割り当ては、独自の std::allocator を提供することでカスタマイズできます (ニーズに合ったものを見つけることができると確信しています。利用可能なものがたくさんあります)。独自のデータ構造の割り当ては、個別に処理する必要があります。最も一般的なのは、タイプ固有のnewanddelete演算子を実装することです。Scott Meyers は、彼の著書の 1 つで、これに関するすばらしい記事を書いています。

もう 1 つの解決策は、Boost.Intrusive を利用することです。これは、コンテナーに必要なすべての内部データ項目が独自のデータ構造に格納されている一連のコンテナーです (そのため、侵入型と呼ばれます)。これにより、2 つの異なる割り当てスキームを用意する必要がなくなり、自分のデータ割り当てだけを気にする必要がなくなります。

于 2010-03-09T15:53:02.647 に答える