参照相同矢量的数据插入矢量

我目前处于想要在矢量中复制某些元素的情况。 总之,我的代码类似于以下内容:

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 &)

因此,在这种情况下,如果容量小于最终容量,则std :: vector必须重新分配其内部数据,这使得我的引用插入的数据无效。

我目前使用的STL(MSVC2013)的实现包含了针对这种插入的保护,因为如果它需要重新分配,它将会复制我的元素。 但是,我不确定我是否能够依靠这种行为,还是需要我自己先制作一份副本? (我宁愿防止自己在升级到新的STL实现时查看这种错误)

所以简而言之:我允许在引用同一个向量中的元素的矢量上调用insert()吗?


你很好。

如果你看一下表99(序列容器需求),你会看到,例如, a.insert(p,i,j) (其中ij是迭代器)具有先决条件:“i和j不是迭代器变成“。

但是调用a.insert(p,n,t) ,其中n是一个count并且t是一个值,没有这样的要求。

这被明确提出作为一个问题在C + + 11天后,它被关闭为NAD与理由“ vector::insert(iter, value)需要工作,因为标准没有给它的权限不上班。”

链接地址: http://www.djcxy.com/p/91147.html

上一篇: Inserting in vector with reference to data of the same vector

下一篇: how to handle this?