C++の使用に戻り、最近書いた簡単なJavaプログラムを変換しようとしています。
C++のJava ArrayListと同等の推奨されるものは何ですか?
使用 - std::vector
class 標準ライブラリから。
ここでvector
を再利用する追加のポイントがいくつかあります。
JavaのArrayList
やArray
とは異なり、vector
を配列として扱うために特別なことをする必要はありません-C++の基礎となるストレージは連続的であり、効率的にインデックス可能。
ArrayList
とは異なり、vector
は、本格的なオブジェクトとしてカプセル化することなく、プリミティブ型を効率的に保持できます。
vector
からアイテムを削除するときは、削除されたアイテムの上のアイテムを連続したストレージを維持するために下に移動する必要があることに注意してください。これは、大きなコンテナでは高価になる可能性があります。
複雑なオブジェクトをvector
に保存する場合は、コピーコンストラクターと代入演算子が効率的であることを確認してください。カバーの下で、C++ STLはコンテナハウスキーピング中にこれらを使用します。
後の拡張でのメモリの再割り当てを最小限に抑えるためのreserve()
ingストレージに関する事前のアドバイス(つまり、ベクトル構築時または初期化時)は、JavaからC++へと引き継がれます。