4

std::list固定要素数で作成するにはどうすればよいですか?

4

4 に答える 4

14

固定サイズのコンテナーが必要な場合は、std::tr1::array. (またはstd::arrayC++0x の場合のみ。)

要素を挿入または削除しない場合、 orstd::listの代わりに使用する利点はないと思います。std::arraystd::vector

于 2010-10-11T15:37:45.567 に答える
10
#include <list>

// list with 5 elements, using default constructor
const size_t fixedListSize(5);
std::list<int> mylist(fixedListSize);  

常に正確に5つの要素を持たせたい場合は、挿入と消去を防ぐためにファサードクラスでラップする必要があります。

それが本当に必要な場合はlist、他の応答で説明されているように、の最も有利な機能を非表示にするため、の代わりに別のコンテナを使用することをお勧めしますlist

于 2010-10-11T15:29:04.730 に答える
3

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も適切なソリューションです。

于 2010-10-11T15:30:25.180 に答える
2

なぜ固定数の要素を持たせたいのか、なぜリストを使用するのか、あなたに尋ねなければなりません。

ユーザーが、限られた数の要素と削除の LRU ポリシーを使用してキャッシュを実装している可能性があります。その場合、リストは使用するのに適したコレクションです。要素にアクセスするたびに、その要素をリストの先頭につなぎます。新しい要素を挿入する必要がある (リストがいっぱいになる) 場合は、リストの後ろからポップします。

要素のある種のルックアップを維持することもできますが、std::list は LRU を処理するのに最適なクラスです。

于 2010-10-11T18:23:52.300 に答える