1樓:linux40
unordered_*還沒寫,寫了個deque,說一下。
首先deque的wikipedia上提到了三種實現方法Double-ended queue
第一種是 circular buffer。
第二種類似vector的實現,只不過可以兩端增長而不是只有一端。
第三種就是有乙個可以兩端增長的指標的佇列(遞迴的定義),佇列中的指標指向一塊資料。
現在來看失效問題。
insert導致所有迭代器和引用失效,但是在首尾插入時,引用不會失效。
「但是」後面,前兩種實現做不到,因為會由於原先申請的空間不夠而需要重新構造,這樣引用會全部失效。
最後一種在兩端插入時不會是因為在兩端插入時,中間的資料不需要移動,如果佇列裡最前面或最後面的指標指向的塊沒滿的話,直接裝進去就行,滿了的話另外申請塊,並將新塊的指標加入指標佇列就行。這樣引用指向的地方和原來是一樣的,沒有失效。
迭代器依舊會失效的原因是,指標佇列可能會增長,空間不夠就只能像前兩種那樣重新申請。不過這樣只會影響迭代器,迭代器移動到塊的邊緣時,需要知道它前後的指標的值,所以,迭代器需要指標佇列的資訊,指標佇列重新申請,迭代器就會失效了。
unordered_*我還沒寫,不過這種標準的話,就不是用的開放定址法,而是鏈結或完全雜湊法了。。。
關於c的問題?
CodeAllen 格式字元 i 輸出乙個整型數 d 輸出乙個整型數 ld 輸出long整數 f 輸出乙個浮點數 雙精度也是這個輸出 e 輸出乙個浮點數,科學計數法,指數形式的浮點數 g 輸出乙個浮點數,當指數小於 4或者大於5,則運用科學計數法,否則正常顯示浮點數 c 輸出乙個字元 s 對應是ch...
c 11中std unique ptr需要明確知道型別的析構函式,而shared ptr不需要?
土地測量員 詳細講一下std unique ptr的部分吧。std unique ptr需要明確知道型別的析構函式 unique ptr型別是 template class T,class Deleter std default delete class unique ptr private T p...
維生素c美白11?
李四 斷斷續續吃了兩盒,沒覺著變白,反而對牙齦上火 口腔潰瘍挺管用,每每家裡有人口腔潰瘍都會來找我淘一粒,還有對改善過敏個人覺著也有一定的作用! 陸陸陸柯潔 維C美白是共識,這裡不多說了。維C是水溶性維生素,對於出汗多,排洩多的人是有必要補充的維C可以增強免疫力,對於容易感冒的人群可以服用維C可以合...