IDE - Visual Studio 2008、Visual C++
- コピー コンストラクターを持つカスタム クラスClass1があります。
- ベクターもあるよ
- データは次のコードを使用して挿入されます
Class1* objClass1; vector<Class1> vClass1; for(int i=0;i<1000;i++) { objClass1 = new Class1(); vClass1.push_back(*objClass1); delete objClass1;
}
これで、挿入ごとにベクターが再割り当てされ、既存のすべてのコンテンツが新しい場所にコピーされます。たとえば、ベクトルに 5 つの要素があり、6 番目の要素を挿入すると、前の 5 つの要素と新しい要素が新しい場所にコピーされます (コピー コンストラクターにログ ステートメントを追加することでわかりました)。
しかし、 reserve()を使用すると、これは期待どおりには起こりません! 次の質問があります
- 常に予約ステートメントを使用することは必須ですか?
- vector はpush_backを実行するたびに再割り当てを行いますか? それとも私がデバッグしているために起こりますか?