我很惊讶在调用 erase 时发现了 vector::erase 移动元素。我认为它会将最后一个元素与“待删除”元素交换并将大小减小一。我的第一反应是:“让我们扩展 std::vector 并覆盖 erase()”。但是我在许多线程中发现,例如“从 C++ STL 容器派生是否有任何真正的风险? ”,它可能导致内存泄漏。但是,我没有向向量添加任何新的数据成员。所以没有额外的内存可以释放。是否还有风险?
有人建议我们应该更喜欢组合而不是继承。在这种情况下,我无法理解这个建议。为什么我要把时间浪费在包装原本很棒的 std::vector 类的每个函数的“机械”任务上?继承确实对这项任务最有意义——或者我错过了什么?