0

タイプ X オブジェクトのベクトルを使用してオブジェクト bool を作成したいと思います。ベクトルを作成するとき:

vector<X>* v = new vector<X>;
v.reserve(10000);

最小限の作業で済ませたい。デフォルトのコンストラクターだけが呼び出されますか (私のデフォルトのコンストラクターは X では空です)?

プログラムの後半で、オブジェクト プールを使用してオブジェクトを「作成」するにはどうすればよいですか? それは次のようなものでしょうか:

int y = get_next_object_in_pool();
X x = v[y];

get_next_object_in_pool()ベクトル内の次の空きインデックスへのインデックスを保持する場所はどこですか?

4

1 に答える 1

0

reserve はオブジェクトを作成しないため、X のコンストラクターは呼び出されません。予約とサイズ変更を混同しないでください。これらは異なることを行います。説明の残りの部分から、予約が必要だと思いますが、ベクターのサイズは0のままであることを忘れないでください.

オブジェクトをプールに追加したいときは、次のようになります

v.push_back(X());

デフォルトの構築されたオブジェクトを追加したいとします。

プール内の構築済みスロットと非構築済みスロットの古い組み合わせを使用して、プールを完全に制御したい場合。それからあなたは何か他のことをしなければならないでしょう。ではそれは得られませんvector<T>

于 2013-10-05T12:24:59.077 に答える