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

问题描述 投票:-4回答:1

我正在用c ++编写代码,我想知道我们何时调用向量是否有任何区别,如果vector.size() = 0vecor.empty();我感到困惑。

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

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

c++ size
1个回答
0
投票

可观察行为没有差异。

但实施细节可能存在差异。

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

empty()可以检查是否:

vector.counter == 0

如果你打电话给size() == 0,那将与empty()实施相同。没有不同

但是在vectorbegin_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

© www.soinside.com 2019 - 2024. All rights reserved.