繁体   English   中英

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

[英]is there a difference between vector.size() = 0 and vector.empty()?

我正在用 C++ 编写代码,我想知道当我们调用向量时vector.size() = 0vecor.empty();之间有什么区别vecor.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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM