現在、私はベクター内のいくつかの要素を複製したいと考えています。容量は、最終的な容量よりも小さい場合、のstd ::ベクトルは、私の参照作り、その内部データのreallocをしなければならず、この場合には、そう同じベクトルのデータを参照してベクトルに挿入する
std::vector<MyStruct> v;
// ...
auto toDuplicate = std::find(v.begin(), v.end(), [](const MyStruct &s) { return true; /*In reality, a bit more complex*/ });
v.insert(toDuplicate, nrOfDuplicates-1, *toDuplicate);
// Signature: insert(iterator, size_t, const value_type &)
:一言で言えば、私のコードは次のようになります。挿入されたデータは無効です。
私が現在使用しているSTL(MSVC2013)の実装には、この種の挿入に対する保護が含まれています。これは、再割り当てが必要な場合、要素のコピーを実行するためです。しかし、私はこの行動に頼ることができるかどうか、または最初に自分自身でコピーを作成する必要があるかどうかはわかりません。 (私はむしろ、新しいSTL実装にアップグレードするときに、この種のバグを見ないようにしたい)
要するに、同じ要素内の要素への参照を持つベクトルにinsertベクター?
私は愚かです。ごめんなさい。 – Slava