簡體   English   中英

vector.size() = 0 和 vector.empty() 有區別嗎?

[英]is there a difference between vector.size() = 0 and vector.empty()?

我正在用 C++ 編寫代碼,我想知道當我們調用向量時vector.size() = 0vecor.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_ptrend_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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM