天天看點

04. 調用empty而不是檢查size()是否為0

檢查容器是否為空,一律都使用成員函數empty()而非size()。

因為empty()總是常數複雜度,而size()卻不都是,比如list就不是。如果list要使size()為常量複雜度,就必須儲存元素的數量。涉及到會導緻元素數量變化的成員函數,就需要知道新增或減少元素的個數(通過周遊),然後更新元素數量。這會使該成員函數為線性複雜度。而list的成員函數splice()被設計為常數複雜度,不知道新增元素的個數。

splice()和size()兩者的常量複雜度不可兼得,二者隻能得一。

STL選擇splice()為常量複雜度, 是以size()就隻能為線性複雜度。

繼續閱讀