如何學(xué)好C++庫類?
在C++的開發(fā)環(huán)境里,C++庫占有的地位是很高的,在現(xiàn)實(shí)生活中,C++庫的種類也非常的廣泛,解決的問題也是因不同的問題制定出不同的解決方案,希望大家能夠切磋學(xué)習(xí)。
庫從輕量級(jí)到重量級(jí)的都有。不少都是讓人眼界大開,亦或是望而生嘆的思維杰作。由于庫的數(shù)量非常龐大,而且限于筆者水平,其中很多并不了解。所以文中所提的一些庫都是比較著名的大型庫。
標(biāo)準(zhǔn)庫
標(biāo)準(zhǔn)庫中提供了C++程序的基本設(shè)施。雖然C++標(biāo)準(zhǔn)庫隨著C++標(biāo)準(zhǔn)折騰了許多年,直到標(biāo)準(zhǔn)的出臺(tái)才正式定型,但是在標(biāo)準(zhǔn)庫的實(shí)現(xiàn)上卻很令人欣慰得看到多種實(shí)現(xiàn),并且已被實(shí)踐證明為有工業(yè)級(jí)別強(qiáng)度的佳作。
Boost 庫是一個(gè)經(jīng)過千錘百煉、可移植、提供源代碼的C++庫,作為標(biāo)準(zhǔn)庫的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的發(fā)動(dòng)機(jī)之一。 Boost庫由C++標(biāo)準(zhǔn)委員會(huì)庫工作組成員發(fā)起,在C++社區(qū)中影響甚大,其成員已近2000人。 Boost庫為我們帶來了最新、最酷、最實(shí)用的技術(shù),是不折不扣的"準(zhǔn)"標(biāo)準(zhǔn)庫。
Boost 總體來說是實(shí)用價(jià)值很高,質(zhì)量很高的庫。并且由于其對跨平臺(tái)的強(qiáng)調(diào),對標(biāo)準(zhǔn)C++的強(qiáng)調(diào),是編寫平臺(tái)無關(guān),現(xiàn)代C++的開發(fā)者必備的工具。但是Boost 中也有很多是實(shí)驗(yàn)性質(zhì)的東西,在實(shí)際的開發(fā)中實(shí)用需要謹(jǐn)慎。并且很多Boost中的庫功能堪稱對語言功能的擴(kuò)展。
其構(gòu)造用盡精巧的手法,不要貿(mào)然的花費(fèi)時(shí)間研讀。Boost另外一面,比如Graph這樣的庫則是具有工業(yè)強(qiáng)度,結(jié)構(gòu)良好,非常值得研讀的精品代碼,并且也可以放心的在產(chǎn)品代碼中多多利用。 #t#
再次體現(xiàn)了C++保持核心語言的效率同時(shí)大力發(fā)展應(yīng)用庫的發(fā)展趨勢!!在C++中,庫的地位是非常高的。C++之父 Bjarne Stroustrup先生多次表示了設(shè)計(jì)庫來擴(kuò)充功能要好過設(shè)計(jì)更多的語法的言論。
現(xiàn)實(shí)中,C++的庫門類繁多,解決的問題也是極其廣泛,庫從輕量級(jí)到重 量級(jí)的都有。不少都是讓人眼界大開,亦或是望而生嘆的思維杰作。由于庫的數(shù)量非常龐大,而且限于筆者水平,其中很多并不了解。所以文中所提的一些庫都是比 較著名的大型庫。
還有很多非常激動(dòng)人心或者是極其實(shí)用的C++庫,限于我們的水平以及文章的篇幅不能包括進(jìn)來。在對于這些已經(jīng)包含近來的庫的介紹中,由于并不是每一個(gè)我們都使用過,所以難免有偏頗之處,請讀者見諒。
C++的復(fù)雜性始終是一個(gè)不可回避的現(xiàn)實(shí)。C++中有大量的陷阱和缺陷,后者導(dǎo)致了數(shù)目驚人的慣用法workarounds。不加選擇的全盤預(yù)先學(xué)習(xí),是非常糟糕的做法,不僅低效,而且根本沒有必要,實(shí)在是浪費(fèi)生命。愛因斯坦曾經(jīng)說過,“我只想知道‘他’(宇宙)的設(shè)計(jì)理念,其它的都是細(xì)節(jié)”。
然而,正如另一些讀者指出的,如果對C++中的這些細(xì)節(jié)事先一點(diǎn)都沒有概念的話,那么實(shí)際編碼中一旦遇到恐怕就變成沒頭蒼蠅了,也許到哪里去RTFM都不知道。這也是為什么那么多C++面試都會(huì)不厭其煩地問一些有代表性的語言細(xì)節(jié)的原因。
把細(xì)節(jié)全盤裝在腦子里固然不好,但對細(xì)節(jié)一無所知同樣也不是個(gè)辦法。那么對于C++庫來說,在學(xué)習(xí)中究竟應(yīng)該以怎樣的態(tài)度和學(xué)習(xí)方法來對付C++的復(fù)雜性呢?
其實(shí)答案也非常簡單,首先有一些很重要&必須的語言細(xì)節(jié)&特性是需要掌握的,然后我們只需知道在C++中大抵有哪些地方有復(fù)雜性(陷阱、缺陷),那么遇到問題的時(shí)候。
【編輯推薦】