我正在用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
由begin_ptr
和end_ptr
两个指针实施的情况下,那么size()
必须计算end_ptr - begin_ptr
。
因此,检查size() == 0
将计算大小,然后与0进行比较。
而empty()
可以检查:
begin_ptr == end_ptr
empty()
将以实施者认为在一般情况下最佳工作的任何方式实施。
因此我建议在需要时调用empty()
。
如果你首先检查size() > 1000
然后检查它是否不是empty()
。然后逻辑上这是一个无用的检查。