web-dev-qa-db-ja.com

JavaのArrayListのC ++バージョンとは

C++の使用に戻り、最近書いた簡単なJavaプログラムを変換しようとしています。

C++のJava ArrayListと同等の推奨されるものは何ですか?

65
interstar

使用 - std::vector class 標準ライブラリから。

76
SLaks

ここでvectorを再利用する追加のポイントがいくつかあります。

JavaのArrayListArrayとは異なり、vectorを配列として扱うために特別なことをする必要はありません-C++の基礎となるストレージは連続的であり、効率的にインデックス可能。

ArrayListとは異なり、vectorは、本格的なオブジェクトとしてカプセル化することなく、プリミティブ型を効率的に保持できます。

vectorからアイテムを削除するときは、削除されたアイテムの上のアイテムを連続したストレージを維持するために下に移動する必要があることに注意してください。これは、大きなコンテナでは高価になる可能性があります。

複雑なオブジェクトをvectorに保存する場合は、コピーコンストラクターと代入演算子が効率的であることを確認してください。カバーの下で、C++ STLはコンテナハウスキーピング中にこれらを使用します。

後の拡張でのメモリの再割り当てを最小限に抑えるためのreserve() ingストレージに関する事前のアドバイス(つまり、ベクトル構築時または初期化時)は、JavaからC++へと引き継がれます。

50
Steve Townsend