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

時間 2021-09-15 00:08:58

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());

vb中的move方法,VB中 move方法的格式是什麼?

鞏峻甄霽 可移動控制元件在窗體上的位置,也可移動窗體在螢幕上的位置。move 左,頂,右,底 小李無刀 引數是左,上,寬,高,引數的位置不能調,當然調了也只是以那個位置去嘛 顯然是可以執行的,效果當然也是不一樣的.並不是你在函式引數裡用了跟引數名稱有關係的變數就可以改變move方法對引數的呼叫方式,...

在素描中什麼是整體的觀察方法

事物總是由許多區域性或多個部分組合成的整體,因而在觀察時不能顧此失彼,而應瞭解事物物件的全貌,把握它的總體。這種對事物物件進行全域性整體的觀察方法叫作整體觀察法。這種觀察還應十分注意事物構成的各部分以及被觀察的各個事物之間的關係,像老舍所說的那樣 必須從頭到尾尋根究底,把它看全。蘇聯教育學家烏申斯基...

在中插入文字框的方法與步驟是,在Word中插入文字框的方法與步驟是

焉雪楓劉問 1.要在檔案中插入 文字框 可通過選擇功能表 插入 文字框 橫排 豎排 2.根據需要選擇垂直或水平模式的文字框後,請將滑鼠移至檔案中想插入文字框的位置,然後按下滑鼠左鍵拖曳一個矩形文字框後放開左鍵即完成文字框插入 3.接著便可以在文字框中輸入文字,如果剛剛拖曳的矩形太小,你可以利用該矩形...