私はstd::vector<>
のようなコンテナを使用したい組み込みアプリケーションで作業しています。残念ながら、私はヒープを使用してはいけません。だからstd::vector<>
は使用できませんでした。だから私は代替案を探しています。ベクトル<>動的割り当ての代わりに静的メモリ
私はブーストstatic_vector
を見たことがありますが、ブーストのアプローチは、私が見た限り、マイクロコントローラにとっては重すぎるようです。または、小型のマイクロコントローラ(例えば、static_vectorのみ)上でブーストを使用した経験があるか?
アプリケーション実行時間全体のエントリの最大数はコンパイル時に分かります。
このためか、私はstd::array<>
実装に基づいて、次の操作を可能にするために、いくつかのロジックを追加している自分でコンテナ実装する必要があれば、オープンソース・ソリューションがあればだから私は思ったんだけど:
追加が(push_back()
)、実行時に要素を削除します(erase()
)。典型的なコンテナイテレータとランダムアクセスを提供します。また、短い手のループも利用できるはずです。 push_back
(イテレータを提供
、ランダムアクセスが私には簡単に思える、とほとんどアドオンを追加する
std::array<>
機能に基づくべきである:
だから私の単純なアプローチは次のようになります)と削除する(
erase
)いくつかのロジックに問題はないはずです。しかし、ループの実装はどのように実装されていますか?
他にも検討が必要なことはありますか?
C++の場合、ヒープ対スタックより[ストレージの持続時間](http://stackoverflow.com/a/408691/1460794)について話すのが理にかなっています。 – wally
静的な容量を持つブースト循環バッファが請求書に適合しているようです。 –
@Muscampester原則として、あなたは完璧ですが、ここでは、割り当てが割り当てられているかどうかにかかわらず、ヒープが消されている(少なくとも私の会社では)埋め込み世界の何かの聖杯について話しています。 。 – Andreas