vector.size()= 0和vector.empty()之间是否有区别



我在C 中编写一个代码,我想知道何时调用矢量vector.size() = 0vecor.empty();是否有任何区别我很困惑。

if (Vector.size()>1000)
    if (!Vector.empty())
        std::cout << "I am Here " ;

我想知道要到达应用第二行的第三行是有意义的吗?我们可以说第一行是正确的,那么我们有一个不是空的向量?

观察行为没有差异。

,但实现细节可能会有差异。

例如,如果使用计数器实现vector,则size()可以返回计数器。

empty()可以检查是否:

vector.counter == 0

,如果您调用size() == 0,那将与empty()实现相同。没有差异

但是,对于由2个指针begin_ptrend_ptr实施的vector,则必须计算size() end_ptr - begin_ptr

因此检查size() == 0将计算大小,然后与0。

进行比较。

empty()可以检查:

begin_ptr == end_ptr

empty()将以实施者认为在一般情况下最能发挥作用的任何方式实施。

所以我建议在需要时致电empty()

如果首先检查size() > 1000,请检查是否不是empty()。然后从逻辑上讲这是一项无用的检查。

https://en.cppreference.com/w/cpp/container/vector/empty

最新更新