c++ - vector.size() = 0 和 vector.empty() 之间有区别吗?
问题描述
我正在用 C++ 编写代码,我想知道当我们调用向量时,如果我感到困惑,vector.size() = 0
是否有任何区别。vecor.empty();
if (Vector.size()>1000)
if (!Vector.empty())
std::cout << "I am Here " ;
我想知道为了达到第三行应用第二行是否有意义?我们可以说如果第一行是真的那么我们有一个不为空的向量吗?
解决方案
可观察的行为没有区别。
但是在实现细节上可能会有所不同。
例如,如果vector
使用计数器实现,则size()
可以只返回计数器。
empty()
可以检查是否:
vector.counter == 0
如果您调用size() == 0
,那将与empty()
实现相同。没有不同
但在vector
由 2 个指针实现的情况begin_ptr
下end_ptr
,则size()
必须计算end_ptr - begin_ptr
。
因此检查size() == 0
将计算大小,然后与 0 进行比较。
而empty()
可以检查:
begin_ptr == end_ptr
empty()
将以实施者认为在一般情况下效果最好的任何方式实施。
所以我建议在需要的empty()
时候打电话。
如果你先检查 if size() > 1000
,然后检查它是否不是empty()
. 那么从逻辑上讲,这是一个无用的检查。