[英]Difference between vector.back() and vector[vector.size() - 1]?
[英]is there a difference between vector.size() = 0 and vector.empty()?
我正在用 C++ 编写代码,我想知道当我们调用向量时vector.size() = 0
或vecor.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_ptr
和end_ptr
实现的vector
,则必须计算size()
end_ptr - begin_ptr
。
因此检查size() == 0
将计算大小,然后与 0 进行比较。
而empty()
只能检查:
begin_ptr == end_ptr
empty()
将以实现者认为在一般情况下效果最佳的任何方式实现。
所以我建议在需要时调用empty()
。
如果您首先检查size() > 1000
然后检查它是否不是empty()
。 那么从逻辑上讲,这是一个无用的检查。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.