我正在用C ++编写代码,我想知道何时调用向量
vector.size() = 0
或vecor.empty();
之间有什么区别
我很困惑。
if (Vector.size()>1000)
if (!Vector.empty())
std::cout << "I am Here " ;
我想知道为了到达第三行而应用第二行是否有意义?我们可以说第一行是否为真,那么我们有一个不为空的向量?
答案 0 :(得分:0)
可观察到的行为没有区别。
但是实现细节可能有所不同。
例如,如果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()
。
如果您先检查size() > 1000
,然后检查它是否不是empty()
。从逻辑上讲这是没用的检查。