編集:TLDR?要約は次のとおりです。
要件は、本質的に無限 (または任意) の長さのコンテナーです。リストは、利用可能なメモリ空間にオブジェクトが収まるため、良いアイデアのように思えます。
ただし、ベクトルはアクセスがはるかに高速で効率的ですが、長いシーケンシャル ストリップがない場合はメモリに収まらない可能性があります。
メモリ使用量を減らすためにポインターのベクトルが提案されましたが、1 ギガバイトのポインターがあり、4 GB の RAM がある場合、問題は残ります。収まらない可能性があります。
解決策: ベクトルのリストが適している場合があります。リスト内の各項目は、アクセスできるようにしたい項目への 1000 個のポインターを持つベクトルである可能性があります。クラスはこの機能を処理できます。
** 元の質問:**
賢者はかつてこう言いました。
私はクラスを持っています:
class A;
クラス A は std::list 内にあります。
std::list<A> list_of_A;
その中のアイテムにアクセスするには、次を使用しています:
std::list<A>::iterator iter = list_of_A.begin();
std::advance(iter, <an_unsigned_int>);
return *iter;
これは機能しているように見えますがreturn *iter
、正しいことをしているのでしょうか? 最後の 3 行は、 を返す関数内にあることに注意してくださいconst A&
。
stackoverflow で回答を探しましたが、この質問の重複を見つけることができませんでした。
List > Vector は、リストの内外を交換するためです。