vector.size()= 0和vector.empty()之间有区别吗?

时间:2019-02-14 15:32:30

标签: c++ size

我正在用C ++编写代码,我想知道何时调用向量 vector.size() = 0vecor.empty();之间有什么区别 我很困惑。

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

我想知道为了到达第三行而应用第二行是否有意义?我们可以说第一行是否为真,那么我们有一个不为空的向量?

1 个答案:

答案 0 :(得分:0)

可观察到的行为没有区别。

但是实现细节可能有所不同。

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

empty()可以检查是否:

vector.counter == 0

如果您调用size() == 0,则将与empty()实现相同。没什么

但是在vector由2个指针begin_ptrend_ptr实现的情况下,则必须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