有哪些STL無法實現的資料結構?

時間 2021-05-30 12:45:29

1樓:法蘭克斯雪諾

首先你要明確兩個概念

資料結構

和stl

所謂資料結構就是一種資料的組織形式,最基本的就是陣列,

如果說你的資料是int,至少也得是兩個int才能叫資料結構

高階的譬如各種圖,各種樹,甚至人工智慧用到的神經元網路(其實神經元這個資料結構本身並不複雜,複雜的是相關演算法)

stl是一些資料結構以及其相關演算法的集合

也就是說,stl是一種中間資料結構件的集合,stl包含最基本的組建是陣列,這玩意已經是一種相當底層的資料結構了,相當於樂高裡面的最基本的片片(這比喻可能不恰當。。。應該int,float才是片片,stl應該是至少拼成兩塊的片片)

可以說只要有陣列,其他的東西統統不要,我就可以通過寫相關演算法表現任意高階資料結構

圖我也可以用陣列表現,雜湊表我可以用陣列表現

只不過如果非要這麼做,效率上可能會有點問題(很多高階資料結構用鍊錶表現在有的情況下效率更好)

就算存在一種資料結構,陣列不能表現,我也可以通過陣列,近似表現

這就是計算機數學的哲學:任意概念,我都能夠通過數位化,近似表示,當這種近似足夠精細,我們可以認為就是乙個東西

所以個人認為理論上不存在stl(或者說陣列)實現不了的資料結構

演算法資料結構中有哪些奇技淫巧?

獨銘鳴 主席樹區間k大,笛卡爾樹單調棧優化的O n 建樹。堆,斜堆,左偏樹,莫隊。第一次見莫隊,覺得好厲害啊,真tm優雅的暴力,然後遇到了個普通莫隊搞不定的題 歷史研究,然後就知道了個回滾莫隊這麼個東西。第一次寫堆,感覺這東西好厲害。後來知道了左偏樹,怎麼能這麼短。再後來,斜堆,emmmm,還能這麼...

學習資料結構對verilog寫演算法有幫助嗎?

說沒用的人只是因為他們沒用到。演算法不等於算數!樓上的例子都太微觀了。如果你做的東西是和演算法高度相關的,CS的東西肯定要熟悉,資料結構非常重要。 One2zeror 其實對硬體實現確實沒什麼幫助,有幫助的話也是體現在設計思想上,比如我以前用Verilog寫過硬體封包器,裡面用到了環形鍊表,但這只是...

有必要學好資料結構和演算法嗎?

一定要學,學得多好因人而異。雖然現在有好多複雜的演算法有各種各樣的庫為你提供解決方案。你可以不需要會寫這些複雜的演算法。但是,如果你不知道這些演算法的基本原理,時空複雜度,你又如何知道該選哪個演算法呢?呼叫了這些函式後,你又如何去估計整個方法的時空複雜度呢? 有一定必要。資料結構和演算法實際上也是技...