参照同一矢量的数据插入矢量
Inserting in vector with reference to data of the same vector
我目前想要在向量中复制一些元素。简而言之,我的代码类似于以下内容:
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)包含对这种插入的保护,因为如果需要realloc,它将复制我的元素。然而,我不确定我是否能够依赖这种行为,或者它是否要求我首先自己复制?(在升级到新的STL实现时,我宁愿避免自己看到这种错误)
简而言之:我可以在一个向量上调用insert()并引用同一向量中的元素吗?
你很好。
如果您查看表99(序列容器要求),您会看到,例如,a.insert(p,i,j)
(其中i
和j
是迭代器)有一个前提条件:"i和j不是a的迭代器"。
但其中CCD_ 5为计数且CCD_ 6为值的呼叫CCD_。
早在C++11天,这一问题就被明确提出,并作为NAD关闭,理由是"vector::insert(iter, value)
必须工作,因为标准没有允许它不工作。"
相关文章:
- 逐行读取文件,并将数据插入变量和数组中
- Qt & SqlLite 将数据插入数据库
- C++ - 将数据插入到地图循环的地图中
- SQLite C/C++ 接口:将数据插入表时内存增加
- C++将 X 向量数据插入到另一个向量
- 如何通过 C 变量将数据插入表中
- 将数据插入一些复杂的数据结构-C
- 将数据插入C 中的文本文件中
- 如何通过c++中的应用程序将数据插入solr
- 在Windows上将数据插入文件
- C++链表——如何将每个新数据插入尾部
- C++链表实现多数据插入
- 在c++中,将数据插入到文件中的特定位置而不进行覆盖
- C++内存从将数据插入链表中泄漏
- 将数据插入多维向量并进行排序
- WINAPI SQLite C无法正确地将数据插入数据库
- 参照同一矢量的数据插入矢量
- PostgreSQL字节二进制数据插入
- Cuda有效地将数据插入到未排序的填充数组中
- 使用 ADO 将原始文件数据插入访问表的 BLOB("OLE 对象")字段