STL でベクトルとリストを選択する場合
Effective STL によれば、シーケンスのデフォルトの選択肢はベクトル コンテナである必要があります。ただし、この推奨事項にはさらなる明確化が必要です。
ベクトルとリスト: 主な違い
ベクトルとリストの違いを理解するには、次の表を考慮してください。
Feature | Vector | List |
---|---|---|
Memory allocation | Contiguous | Non-contiguous |
Storage overhead | Pre-allocates space | Constant memory overhead |
Element space | No extra pointers | Extra space for node (pointers to next/previous) |
Memory reallocation | Can reallocate memory for entire vector | Never reallocates memory for entire list |
Insertion efficiency | O(1) at end, O(n) elsewhere | O(1) anywhere |
Erasure efficiency | O(1) at end, O(n) elsewhere | O(1) always |
Random access | Supported | Not supported |
Iterator validity | Invalidated after additions/removals | Remains valid after additions/removals |
Array access | Underlying array easily obtained | No underlying array available |
リストがいつ実行されるか推奨
一般にベクトルの方が効率的ですが、特定のシナリオではリストの方が良い選択肢となる可能性があります。
以上がSTL のベクターとリスト: いつどちらを選択すべきですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。