如何從零開始手寫乙個tiny STL?

時間 2021-05-10 20:50:47

1樓:maxint

因某某原因不能用ndk的stl,手擼vector,string, type_traits, alogorithm等,功能不完整,用到才實現。vector主要是參考cppreference的文件和vc的實現,支援allocator(因為需要用到自定義記憶體管理器), exception safe, c++11。其他的還參考boost實現,加上簡單的單元測試,保證行為和stl一致,這樣隨時可以切回官方的。

好處:嵌入式平台不依賴編譯器自帶的stl或沒有,標準愛支援到多少就多少,當然c++11部分需要編譯器支援。

缺點:自己擼累呀,要保證正確,高效和行為一致。盡量不造輪呀,stl更不該

2樓:Rick

看STL的原始碼可以學到更多的東西。。剛學完資料結構的話對於C++的各種抽象其實還不能理解。。 狂看原始碼可以學到很多東西。

3樓:

別好高騖遠,先實現乙個最基本的vector,只寫幾個建構函式——這裡要確保你理解什麼是深複製;然後再來實現insert和自動擴容,下一步是模板,過載方括號運算子,iterator,最後可以考慮右值引用建構函式,以及使用placement new重寫複製建構函式

從我的經驗來看,你這個階段的學生,現在不一定能把第一步做好——這是我出的C++大作業,在我看來應該是沒多難的,結果學生做起來……

4樓:

zouxiaohang/TinySTL

採用C++11實現一款簡易的STL標準庫,既是C++STL的乙個子集(裁剪了一些容器和演算法)又是乙個超集(增加了一些容器和演算法)

除了STL基本的string、vector、list、deque、set、map、unordered_*等容器,還有circular buffer、bitmap、trie、B-tree、suffix array/tree、bloom filter等在一般的資料結構書裡較少出現的容器,還有相對完整的測試用例和效能測試,值得學習與揣摩。

5樓:hseury

分享一下我覺得比較好的實現路線哈,allocator->smart_pointer,fuctional->algorithm->container,重點是不要一上來就搞容器,容器裡面會大量使用其他元件的介面,直接搞容器會把戰線拉的非常長。

單元測試很重要~

6樓:叛逆者

1. 「最近學習完資料結構,想去寫個簡略的STL,不知道從何處開始?」

有語言基礎,學了資料結構,仍然不知道從何處開始,那只能說明水平還不夠實現個STL。先搞搞小程式,練習練習資料結構吧。否則實現各種資料結構的同時就已經可以實現多個容器了。

2. 「寫STL可以提公升一點C++水平嗎?」

並不會比些別的東西提公升更快。

3. 「如果有大牛能掛出自己寫的原始碼參考下就更好了!」

我看你是要交作業吧。

如何從零開始建乙個論壇

汪老師 首先準備乙個建論壇站點的主機空間,要穩定執行,我這裡推薦一下阿貝雲伺服器 阿貝雲 ABY 領先的雲伺服器 虛擬主機 免費空間 免備案網域名稱註冊服務商 我已經使用有半年多了,不僅是可以免費用的,而且是免費使用的。阿貝雲的雲伺服器網速很好,非常穩定好用,而且免費雲伺服器,價效比真的很高,對新人...

如何從零開始製作乙個遊戲?

茶多酚 你先把乙個遊戲做完,你就知道該怎麼做乙個遊戲了乙個暴論 遊戲 以及絕大多數軟體 本質上都是 知道螢幕上該顯示什麼,以及讓他顯示出來 只要你不涉及高深的演算法和通訊,以及精度過高的圖形學和優化這兩點都是相對容易理清的 你先理清楚,螢幕上該顯示什麼,螢幕上顯示的東西應該怎麼根據輸入而變化然後讓它...

如何從零開始成為乙個飛行員?

Cap Mach 不請自來 如果考慮成為一名飛行員應當從下面幾個方面考慮 思想準備 考慮成為什麼樣的飛行員,是以職業目的還是以興趣愛好為目的,這樣會對自己的訓練強度和規劃有乙個更好的了解 不管出於什麼目的,學習飛行始終應當保持嚴謹,一絲不苟,與開車不同在天空中發生任何情況都沒法立馬把飛機停在原地再思...