在清除之前检查一个向量?

Check a vector before clear?

我不确定,但我想我已经读过,您应该只删除不为空的矢量。 所以现在我总是在删除向量之前进行检查:

if (!vector.empty()) {
    vector.clear();
}

但是,我再也找不到任何关于此步骤是否不必要的信息。

是否禁止在空向量上使用clear

不需要检查,

并降低 IMO 的可读性。

确实,在清除空序列或关联容器时存在与未定义行为相关的 issue 问题,但现在已修复,完全安全调用 std::vector::clear 之前没有 检查 std::vector 是否为空。