我在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()
实现相同。没有差异
但是,对于由2个指针begin_ptr
和end_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