作者:囬憶啲伈情_542_256_427 | 来源:互联网 | 2023-05-25 09:07
由于vector类型的对象在内部由数组支持,因此vector类的erase函数如何从其内部数组中删除所选元素?
我正在寻找至少一个基本代码示例的深入解释.
1> Mats Peterss..:
通过复制擦除元素后的元素,然后在末尾填充"空"元素.然后将尺寸标记为少一个.
大致代码就像这样[ACTUAL实现将使用技巧来避免制作不必要的副本等,例如使用移动语义]
templatestd::vector::erase(int index)
{
// Call destructor of T for the one being deleted.
storage[index].T~();
for(i = index; i
如果你想看看REAL实现是如何工作的,我建议你启动调试器,然后亲自试试.但是如果它非常复杂且难以理解也不要感到惊讶 - 编写库代码的人通常非常精通语言的工作方式,并且会使用"书中的任何技巧"来使其更快/更小/更整洁.