std::list
固定要素数で作成するにはどうすればよいですか?
4 に答える
固定サイズのコンテナーが必要な場合は、std::tr1::array
. (またはstd::array
C++0x の場合のみ。)
要素を挿入または削除しない場合、 orstd::list
の代わりに使用する利点はないと思います。std::array
std::vector
#include <list>
// list with 5 elements, using default constructor
const size_t fixedListSize(5);
std::list<int> mylist(fixedListSize);
常に正確に5つの要素を持たせたい場合は、挿入と消去を防ぐためにファサードクラスでラップする必要があります。
それが本当に必要な場合はlist
、他の応答で説明されているように、の最も有利な機能を非表示にするため、の代わりに別のコンテナを使用することをお勧めしますlist
。
std::list
コンストラクターを使用する必要があります。
explicit list (size_type n, const T& value = T(), const Allocator& = Allocator());
作成時に要素の正確な数を指定するだけです。
std::list<int> someList(20);
各要素の初期値を指定することもできます。
std::list<int> someList(20, int(42));
std :: list::resizeも適切なソリューションです。
なぜ固定数の要素を持たせたいのか、なぜリストを使用するのか、あなたに尋ねなければなりません。
ユーザーが、限られた数の要素と削除の LRU ポリシーを使用してキャッシュを実装している可能性があります。その場合、リストは使用するのに適したコレクションです。要素にアクセスするたびに、その要素をリストの先頭につなぎます。新しい要素を挿入する必要がある (リストがいっぱいになる) 場合は、リストの後ろからポップします。
要素のある種のルックアップを維持することもできますが、std::list は LRU を処理するのに最適なクラスです。