sarscape 将dem文件转化成stl_STL源码剖析 阅读笔记(一)介绍
一、學習動機
對C++的理解:最近因為工作原因需要重新對C++進行學習,而上一次系統(tǒng)、全局的學習C++已經(jīng)是在本科時期了,然后是讀研期間的第一年學過一點皮毛,后來對C++的學習都是邊用邊學。縱然這樣已經(jīng)足夠我解決大多數(shù)開發(fā)和業(yè)務(wù)上的問題了,但是沒有真正對其底層進行深入研究,還是無法說真正學會了這個語言或者對這個語言足夠“熟悉”。
對語言底層的理解:在入行以來,其實學過很多語言,諸如VB、C、C++、Java、HTML、CSS、JS、Python等。可以說想快速上手一門語言進行開發(fā)工作對我而言不是什么問題了,然而關(guān)于各種不同語言的相同點和異同點,底層的一些基本模型,我其實也并未過多的深究。
對實現(xiàn)細節(jié)的理解:讀研期間做深度學習和算法,為了快速實現(xiàn)功能,主要使用的是Python。眾所周知,Python的語言難度低,易用性高。雖然開發(fā)人員使用方便,但也隔絕了許多細節(jié)。這些細節(jié)從學習和探究的角度來說,其實是很寶貴的。
對數(shù)據(jù)結(jié)構(gòu)的理解:Python的數(shù)據(jù)結(jié)構(gòu)封裝的比較完整和成熟,使用的時候基本上就是隨用隨取,諸如list、map、set的使用,非常方便。所以在刷題(LeetCode)時,語言上首選的都是Python。刷題的時候確實很爽,很有助于提高刷題進度、快速實現(xiàn)、理解思路,但是感覺這種方式還是不夠“硬核”。想要真正檢測自己的算法Coding水平,可能還是要用C++來實現(xiàn)。
出于以上幾個原因方面,決定對C++重新學習,深入思考。
C++從傳統(tǒng)的98已經(jīng)到后來的11、14、17,直到現(xiàn)在的20,但最常用的可能還是98和11。所以先對98和11理解,旨在打牢基礎(chǔ),理解原理,而不在于語法糖、新特性、快速實現(xiàn)等。
這里定兩個小目標。
- 把《STL源碼剖析》一書閱讀一遍,搞清基本的STL底層實現(xiàn)。
- 使用C++把算法題刷200道。
二、前言
首先來了解一下《STL源碼剖析》這本書,這里摘錄原書引文的幾句話。
- 為什么要學STL庫?
大師們的縝密思維、經(jīng)驗結(jié)晶、技術(shù)思路、獨到風格,都原原本本體現(xiàn)在源碼之中。在你仔細推敲之中,迷惑不解之時,恍然大悟之際,你的經(jīng)驗、思維、視野、知識乃至技術(shù)品味都會獲得快速的成長。
天下大事,必作于細。
參觀飛機工廠并不能讓你學到流體力學,也不能讓你學會開飛機。然而你如果會開飛機又懂流體力學,參觀飛機工廠可以帶給你最大的樂趣和價值。
- 為什么要讀侯捷老師的書?
- 侯捷老師如何寫這本書?
- 這本書有些什么內(nèi)容
2. 空間配置器 allocator
3. 迭代器 iterators 與 traits 編程技法
4. 序列式容器 sequence container
5. 關(guān)聯(lián)式容器 associated containers
6. 算法 algorithms
7. 仿函數(shù)或函數(shù)對象 functors or function objects
8. 配接器 adapter
三、STL介紹
STL是標準模板程序庫,它所實現(xiàn)的,是依據(jù)泛型思維架設(shè)起來的一個概念結(jié)構(gòu)。這個以抽象概念(abstract concepts)為主體而非以實際類(classes)為主體的結(jié)構(gòu),形成了一個嚴謹?shù)臉藴式涌凇T诖私涌谥?#xff0c;任何組件都有最大的獨立性,并以迭代器(iterator)膠合起來,以配接器(adapter)互相配接,以仿函數(shù)(functor)動態(tài)選擇某種策略(policy 或 strategy)。
(一)STL六大組件
六大組件的關(guān)系如下圖所示。
圖 STL六大組件的交互關(guān)系:container通過allocator取得數(shù)據(jù)存儲空間,algorithm通過iterator存取container內(nèi)容,functor協(xié)助algorithm完成不同策略變化,adapter可以修飾或套接functor。(二)SGI STL 文件分布與簡介
- C++ 標準規(guī)范下的 C 頭文件(無擴展名),如 cstdio、cstdlib、cstring
- C++ 標準程序庫中不屬于 STL 范疇者,如 stream、string
- STL 標準頭文件(無擴展名),如 vector、deque、list、map、algorithm、functional
- C++ Standard 定案前,HP 所規(guī)范的STL 頭文件,如 vector.h、deque.h、list.h、map.h、algo.h、function.h
- SGI STL 內(nèi)部文件(STL 真正實現(xiàn)于此),如 stl_vector.h、stl_deque.h、stl_list.h、stl_map.h、stl_algo.h、stl_function.h
總結(jié)
以上是生活随笔為你收集整理的sarscape 将dem文件转化成stl_STL源码剖析 阅读笔记(一)介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 码支付如何对接网站_支付宝当面付门店码如
- 下一篇: 做方差分析需要正态性检验吗_检验工序要做