国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C++面試八股文:std::deque用過嗎?

這篇具有很好參考價值的文章主要介紹了C++面試八股文:std::deque用過嗎?。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

某日二師兄參加XXX科技公司的C++工程師開發(fā)崗位第26面:

面試官:deque用過嗎?

二師兄:說實話,很少用,基本沒用過。

面試官:為什么?

二師兄:因為使用它的場景很少,大部分需要性能、且需要自動擴容的時候使用vector,需要隨機插入和刪除的時候可以使用list

面試官:那你知道STL中的stack是如何實現(xiàn)的嗎?

二師兄:默認情況下,stack使用deque作為其底層容器,但也可以使用vectorlist作為底層容器。

面試官:你覺得為什么STL中默認使用deque作為stack的底層容器嗎?

二師兄:額。。(stack也不需要雙端插入啊,不應(yīng)該vector更好嗎。。)不是很清楚。。

面試官:沒關(guān)系。那你知道deque是如何實現(xiàn)的嗎?

二師兄:與vector內(nèi)存空間連續(xù)不同,deque是部分連續(xù)的。deque通常維護了一個map(不是std::map),map的每個元素指向一個固定大小的chunk。同時維護了兩個指針,指向頭chunk和尾chunk。在deque的頭部或尾部插入元素時,deque會找到頭部或尾部的指針,并通過指針找到對應(yīng)的chunk。如果chunk中還有未被元素填充的位置,則將元素填充到數(shù)組中,如果此指針指向的chunk已經(jīng)被元素填滿,則需要重新開辟一塊固定大小的chunk,并將chunk記錄在map中。

C++面試八股文:std::deque用過嗎?

面試官:deque的查找、插入、刪除的時間復(fù)雜度是什么?

二師兄:dqueue查找的時間復(fù)雜度是O(N),插入要分情況,如果是頭插和尾插,時間復(fù)雜度為O(1),如果是中間插入,則是O(N)。刪除元素和插入元素的時間復(fù)雜度相同。

面試官:好的。面試結(jié)束,回去等通知吧。

讓我們來看一下二師兄的表現(xiàn):

為什么STL中默認使用deque作為stack的底層容器嗎?

STL默認選擇deque最為stack的底層容器肯定是有原因的。vectorlist同樣可以作為deque的底層容器,讓我們比較一下三個容器的差異:(只考慮頭插和尾插,因為stack不需要隨機插入)

deque vector list
插入 O(1) O(1) O(1)
刪除 O(1) O(1) O(1)

從上表中看到,三種容器的插入和是刪除的時間復(fù)雜度相同。

但是如果連續(xù)插入時,情況發(fā)生變化。vectorcapacity被耗盡,元素發(fā)生搬移。

list倒沒有這個顧慮,但是當元素尺寸很小時,list的空間利用率太低。

deque雖然遍歷效率不如vector、隨機插入效率不然list,但stack并不需要這兩種操作,所以dequestack底層容器的最佳選擇。

今天的面試分享到這里就結(jié)束了,讓我們繼續(xù)期待二師兄的表現(xiàn)吧。

關(guān)注我,帶你21天“精通”C++?。ü奉^)文章來源地址http://www.zghlxwxcb.cn/news/detail-501270.html

到了這里,關(guān)于C++面試八股文:std::deque用過嗎?的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • C++面試八股文:std::string是如何實現(xiàn)的?

    某日二師兄參加XXX科技公司的C++工程師開發(fā)崗位第18面: 面試官: std::string 用過吧? 二師兄:當然用過(廢話,C++程序員就沒有沒用過 std::string 的)。 面試官: std::string(\\\"hello\\\")+\\\"world\\\" 、 \\\"hello\\\"+std::string(\\\"world\\\") 和 std::string(\\\"hello\\\")+std::string(\\\"world\\\") 的結(jié)果是什么?為什么? 二師

    2024年02月09日
    瀏覽(23)
  • C++面試八股文:std::array如何實現(xiàn)編譯器排序?

    某日二師兄參加XXX科技公司的C++工程師開發(fā)崗位第25面: 面試官: array 熟悉嗎? 二師兄:你說的是原生數(shù)組還是 std::array ? 面試官:你覺得兩者有什么區(qū)別? 二師兄:區(qū)別不是很大,原生數(shù)組(非動態(tài)數(shù)組)和std::array都在棧上開辟空間,初始化的時候需要提供數(shù)組長度,且

    2024年02月10日
    瀏覽(26)
  • C++面試八股文:知道std::unordered_set/std::unordered_map嗎?

    某日二師兄參加XXX科技公司的C++工程師開發(fā)崗位第27面: 面試官:知道 std::unordered_set/std::unordered_map 嗎? 二師兄:知道。兩者都是C++11引入的新容器,和 std::set 和 std::map 功能類似, key 唯一, unordered_map 的 value 可變。 二師兄:不同于 set/map , unordered_set/unordered_map 都是無序

    2024年02月11日
    瀏覽(22)
  • C++面試八股文:技術(shù)勘誤

    C++面試八股文:技術(shù)勘誤

    不知不覺,《C++面試八股文》已經(jīng)更新30篇了,這是我第一次寫技術(shù)博客,由于個人能力有限,出現(xiàn)了不少紕漏,在此向各位讀者小伙伴們致歉。 為了不誤導(dǎo)更多的小伙伴,以后會不定期的出勘誤文章,請各位小伙伴留意。 在《C++面試八股文:C++中,設(shè)計一個類要注意哪些東

    2024年02月11日
    瀏覽(29)
  • C++面試八股文:如何避免死鎖?

    某日二師兄參加XXX科技公司的C++工程師開發(fā)崗位第31面: 面試官:什么是鎖?有什么作用? 二師兄:在C++中,鎖(Lock)是一種同步工具,用于保護共享資源,防止多個線程同時訪問,從而避免數(shù)據(jù)競爭和不一致。 面試官:有哪些鎖? 二師兄:從種類上分,可以分為普通鎖、

    2024年02月12日
    瀏覽(28)
  • C++面試八股文:什么是構(gòu)造函數(shù)?

    某日二師兄參加XXX科技公司的C++工程師開發(fā)崗位第29面: 面試官:什么是構(gòu)造函數(shù)? 二師兄:構(gòu)造函數(shù)是一種特殊的成員函數(shù),用于創(chuàng)建和初始化類的對象。構(gòu)造函數(shù)的名稱與類的名稱相同,并且沒有返回類型。構(gòu)造函數(shù)在對象被創(chuàng)建時自動調(diào)用。 面試官:什么是默認構(gòu)造

    2024年02月11日
    瀏覽(26)
  • C++面試八股文:了解位運算嗎?

    某日二師兄參加XXX科技公司的C++工程師開發(fā)崗位第12面: 面試官:了解位運算嗎? 二師兄:了解一些。(我很熟悉) 面試官:請列舉以下有哪些位運算? 二師兄:按位與( )、按位或( | )、按位異或( ^ ),按位取反( ~ )、左移( )和右移( )。 面試官:好的。那你

    2024年02月08日
    瀏覽(23)
  • C++面試八股文:什么是RAII?

    某日二師兄參加XXX科技公司的C++工程師開發(fā)崗位第13面: 面試官:什么是 RAII ? 二師兄: RAII 是 Resource Acquisition Is Initialization 的縮寫。翻譯成中文是資源獲取即初始化。 面試官: RAII 有什么特點和優(yōu)勢? 二師兄:主要的特點是,在對象初始化時獲取資源,在對象析構(gòu)時釋放

    2024年02月08日
    瀏覽(27)
  • C++面試八股文:什么是智能指針?

    C++面試八股文:什么是智能指針?

    某日二師兄參加XXX科技公司的C++工程師開發(fā)崗位第19面: 面試官:什么是智能指針? 二師兄:智能指針是C++11引入的類模板,用于管理資源,行為類似于指針,但不需要手動申請、釋放資源,所以稱為智能指針。 面試官:C++11引入了哪些智能指針? 二師兄:三種,分別是 s

    2024年02月09日
    瀏覽(24)
  • C++面試八股文:聊一聊指針?

    C++面試八股文:聊一聊指針?

    某日二師兄參加XXX科技公司的C++工程師開發(fā)崗位第17面: 面試官:聊一聊指針? 二師兄:好的。 面試官:你覺得指針本質(zhì)上是什么? 二師兄:這要從內(nèi)存地址開始說起了。如果有一塊容量是1G的內(nèi)存,假設(shè)它的地址是從 0x00000000 到 0x3fffffff ,每一個字節(jié)都對應(yīng)一個地址。當

    2024年02月09日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包