cstl set中find方法是如何實現的

2021-09-15 00:09:06 字數 1394 閱讀 7108

1樓:紅_扎

是用在平衡二叉樹上查詢的演算法實現的,複雜度是o(log n)。

stlport裡面的實現**如下:

_base_ptr _m_find(const _kt& __k) const

}return __y;

}第二個問題,單獨使用的話,set應該比較快些(vector 的話,要先來個排序然後再二分,估計速度也差不多),不過如果你用的編譯器新的話,能支援c++11的話,建議你用unordered_set應該可以更快些。 要想速度更更快些的話,就不要用stl了,自己小心點實現個雜湊演算法應該可以辦到。

2樓:匿名使用者

set就是個紅黑樹,find的時間複雜度o(log2(n)),其實現大約就是二叉排序樹查詢,只不過紅黑樹的統計學特性更好;至於好在哪兒,我沒研究過,感興趣可以自己看演算法導論;

vector 和set的問題,用hash表也不一定就最快,比如string,hash運算也消耗資源;

如果10個int的話,我覺得vector可能比set更好,你自己寫個程式試試,time計算下時間;

如果查詢元素的次序有規律的話,可以利用一下啊提高效率,將出現頻率更高的元素放在前面;

3樓:

我覺得第二個問題是vector快一些吧,就是要先用sort排序,然後用已序區間上的演算法來查詢。set和已序查詢的漸近時間是一樣的,但是我覺得vector直接支援隨機訪問,應該會比基於二叉樹實現的set來得快把,畢竟會少掉很多的輔助結構。

我也不是非常明白底層實現,以上是個人推斷僅供參考。

在c++中,怎麼將vector中的元素插入到set中

4樓:

遍歷vector,逐一插入:

vectorv;

sets;

for(int i=0;i

5樓:育知同創教育

stl演算法中有個copy函式可以實現從vector中插入set中。

具體實現如下:

#include

#include

#include

int main()

優化後的方法如下:

back_inserter 是iterator介面卡,它使得元素被插入到作為實參的某種容器的尾部#include

#include

#include

#include

int main()

6樓:匿名使用者

vectorv;

sets;

v.push_back(1);

v.push_back(3);

.........

s.insert(v.begin(),v.end());

photoshop中讓畫面變朦朧的方法是什麼

1.先把人物勾 復選出來,然後反選,shift ctrl i 制選中要朦朧的地方。2.然後依次 濾鏡 模糊 高斯模糊。值自己調整下,推薦設3.8到5。3.看下效果,模糊不夠按ctrl f,反覆使用高斯模糊。4.顏色感覺不滿意的話,使用複製圖層 ctrl j 運用圖層的混合模式調整,選擇柔光應該就可以...

java中方法中丟擲異常處理方法

看了你的 問題感覺比較多 我提幾點建議,勿惱 明明是 a b 除法計算,方法名稱為什麼寫成add?if b 0 throw 異常的 這段 應該寫在 上面 abc 的 除法方法裡面 然後 result.add 4,0 這句話 要寫在 try 裡面 汗,因為你這個不是在同一個類裡面,呼叫abc類裡面的常...

jquery中bind方法中的引數

keydown mouseover click mouseup mousemove.跪求jquery中的bind 引數中function引數問題 如果你這裡面寫的是繫結click方法,我就不知道怎麼回事兒了,但如果不是click,而是chick,那就有可能知道data是什麼,如下是api中的demo...