【发布时间】:2020-06-05 18:13:02
【问题描述】:
我不确定,但我想我已经读过你应该只删除一个不为空的向量。 所以现在我总是在删除向量之前检查:
if (!vector.empty()) {
vector.clear();
}
但是,我不再发现有关此步骤是否不必要的任何信息。
是否禁止在空向量上使用clear?
【问题讨论】:
标签: c++ c++11 vector stl stdvector
我不确定,但我想我已经读过你应该只删除一个不为空的向量。 所以现在我总是在删除向量之前检查:
if (!vector.empty()) {
vector.clear();
}
但是,我不再发现有关此步骤是否不必要的任何信息。
是否禁止在空向量上使用clear?
【问题讨论】:
标签: c++ c++11 vector stl stdvector
检查是不需要的,
并降低 IMO 的可读性。
【讨论】:
确实,在清除空序列或关联容器时,有一个与未定义行为相关的 issue,但现在已修复此问题,调用 std::vector::clear 非常安全没有之前检查std::vector是否为空。
【讨论】: