簡體   English   中英

在STL集上使用靜態與成員查找方法?

[英]Using static vs. member find method on a STL set?

我正在使用一個集合因為,我想使用已排序容器(如集合)的快速查找屬性。 我想知道是否必須使用find成員方法來獲取已排序容器的好處,還是我還可以在STL算法中使用靜態find方法?

我的預感是使用靜態版本將使用線性搜索而不是我想要的二進制搜索。

你是對的, 非成員版本進行線性搜索,而成員版本進行O(log N)搜索。 std :: set針對O(log N)插入,檢索和刪除進行了優化。

作為定義,std :: find方法不是靜態函數。 請參閱此處,了解靜態在C ++中可能涉及的各種內容

這是依賴於實現的,因為有人可能已經對使用集合上的二進制搜索的靜態“查找”實現了部分特化,但考慮到所有事情,成員函數版本可能表現更好。

IIRC,Scott Meyers在他的“有效STL”一書中建議總是更喜歡查找,交換等常用函數的成員版本而不是非成員函數,因為與非成員版本相比,它們更可能是最佳實現並且您通常可以依賴成員版本的性能優勢,而您不能總是依賴於給定函數的部分特化將存在的事實。

暫無
暫無

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

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