做的时候 v.erase(some_iterator);
实现是否足够聪明,不能进行任何重新分配/字节复制,因为我们只能更新大小?(与严格删除内部元素时不同.)
Bau*_*gen 12
从a std::vector中删除不会使迭代器失效,也不会在第一个擦除元素之前对元素进行引用.
因此,如果仅删除最后一个元素,则可以保证所有其他元素都保持原样,不会移动或复制它们.
但是请注意,从std::vector一般情况下擦除只会改变它的大小,而不是它的容量,因此旧对象所存在的内存仍归其所有vector.这是出于性能原因而无需担心(除非你的RAM耗尽).
此外,被擦除的物体当然是被正确破坏的,所以如果它们不是简单的可破坏的,除了调整它们vector的大小之外,还必须运行它们的析构函数.
| 归档时间: |
|
| 查看次数: |
408 次 |
| 最近记录: |