私は、それぞれがユーザー定義型のデータを格納する40の巨大なデッキを持っているとします。 40はそれほど多くはありませんが、デク自体は巨大です(なぜ私はベクトルに対してデクを使用することにしましたか)。私の質問は、私はこれらの40のdequesのコンテナを必要とする場合は、そのコンテナは、ベクトルまたは両端キューですか?C++で巨大なdequesを格納するためにdequeまたはvectorを使うべきですか?
私の巨大なデュークスを含むベクトルを選択すると、ベクトルがメモリ内で巨大になるか、ベクトルの要素がデクを指すのでしょうか? 40の巨大なdequesを格納した結果、格納されているベクトルが巨大になった場合、最初にユーザー定義型コンテナにdequesを使用するように選択したときに、連続したメモリ関連の問題を回避するためにdequesを使用する必要があります。
例;
class myClass {
// lots of data members resulting in large class object
}
int main(){
std::deque<myClass> foo;
for(int i=0, i<10000000, i++){
myClass classObject;
foo.push_back(classObject);
}
}
ここで、私たちのクラスオブジェクトを含む1000000要素の両端キューがあります。私はこれらのdequesの40を作成すると想像してください。
今、私はこれを行うべきかどうか、これらの40のデケのためのコンテナが必要です。
std::vector< std::deque<myClass> > bar
またはこれを行う必要があります。
std::deque< std::deque<myClass> > bar
あなたが提示したオプションは、任意に交換することはできません。実際に達成する必要のあるものについてもっと明確にしてください。 –
std :: dequeタブ[40]。 ? –
willll
@willll組み込みバリアントに対して 'std :: array'を使うことをお勧めしますが、基本的にはyesです。正しい考え。 –