簡體   English   中英

C ++中向量的.size()實際上做了什么?

[英]What does .size() for a vector in C++ actually do?

換句話說,.size()計算向量對象的每個元素,只要它被調用並返回該值,或者向量對象是否具有(size_t?)成員,該成員保存當前在向量中的元素數量,以及值這個成員是由.size()返回的?

究竟std::vector::size的調用取決於標准庫的特定實現。 但是,該標准對它能做什么和不能做什么都有一些限制 特別是,它需要調用size以在恆定時間內執行,這意味着它不能計算元素(在容器大小中是線性的,而不是常量)。

向量的實現需要一個指針指向向量的開頭,然后是其他兩個信息:向量數據當前有多大(向量中有多少元素),以及當前向量的容量有多大(多大)是分配的數據緩沖區)。 后兩者既可以作為指針實現,也可以作為beginning指針的偏移實現。 可以使用任一表示來獲取恆定時間內的數據大小:直接返回偏移量,或者將其計算為end - beginning

您可以在標准本身或適當的參考文檔中驗證復雜性要求。

std::vector::size的實現依賴於實現,即使它需要在O(1)具有復雜性。

暫無
暫無

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

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