C++03标准是否允许向其自身附加std::vector?我想知道如果v需要重新分配内存,源迭代器是否会变得无效。在我的STL实现中,旧内存一直保留到创建新内存为止。但我能相信这一点吗?如果不是,插入前的v.reserve(2*v.size())是否是避免重新分配的好方法
向量<;int>;五、
v、 储备(3);
v、 推回(1);
v、 推回(2);
v、 推回(3);
//v可能需要重新分配,因为其容量可能小于6。
//这个手术安全吗?
v、 插入(v.end(),v.cbegin(),v.cend());
或
//这里v不需要重新分配,因为它有足够的容量。
//这个手术安全吗?
v、 保留(2*v.尺寸());
v、 插入(v.end(),v.cbegin(),v.cend());
无论是否提前执行保留,行为都是未定义的。对于std::vector::insert:
在位置之前插入范围[第一个,最后一个]on 元素
如果InputIt是整数类型,则此重载与重载(3)具有相同的效果。(直到C++11)
如果first和last是*this的迭代器,则该行为未定义