![](/img/trans.png)
[英]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.