您現在的位置是:電腦技術吧?>? 故障問題 ??>??尤里克克,鋼琴基礎教程??>??正文詳情

尤里克克,鋼琴基礎教程

鏡書雁2019-11-19 12:01:22 人圍觀
簡介古典樂器STL作為C 標準不可或缺的一部分,應該滲透到C 程序的各個角落。STL不是實驗室里的最愛,也不是程序員桌上的顯示器。她的興奮不是曇花一現。本教程旨在傳播和中阮入門

作為C 標準不可缺少的一部分,STL應該是滲透在C 程序的角角落落里的。

STL不是實驗室里的寵兒,也不是程序員桌上的擺設,她的激動人心并非曇花一現。

本教程旨在傳播和普及STL的基礎知識,若能借此機會為STL的推廣做些力所能及的事情,到也是件讓人愉快的事情。

  1 初識STL:解答一些疑問  1.1 一個最關心的問題:什么是STL科學領域里所常用的基本數據結構和基本算法。

為廣大C 程序員們提供了一個可擴展的應用框架,高度體現了軟件的可復用性。

這種現象有些類似于Microsoft Visual C 中的MFC(Microsoft Foundation Class Library),或者是Borland C Builder中的VCL(Visual Component Library),對于此二者,大家一定不會陌生吧。

  什么是STL?,假如你對STL還知之甚少,那么我想,你一定很想知道這個問題的答案,坦率地講,要指望用短短數言將這個問題闡述清楚,也決非易事。

因此,如果你在看完本節之后還是覺得似懂非懂,大可不必著急,在閱讀了后續內容之后,相信你對STL的認識,將會愈加清晰、準確和完整。

不過,上述這番話聽起來是否有點像是在為自己糟糕的表達能力開脫罪責呢?:)  不知道你是否有過這樣的經歷。

在你準備著手完成數據結構老師所布置的家庭作業時,或者在你為你所負責的某個軟件項目中添加一項新功能時,你發現需要用到一個鏈表(List)或者是映射表(Map)之類的東西,但是手頭并沒有現成的代碼。

于是在你開始正式考慮程序功能之前,手工實現List或者Map是不可避免的。

于是,最終你順利完成了任務。

或許此時,作為一個具有較高素養的程序員的你還不肯罷休(或者是一個喜歡偷懶的優等生:),因為你會想到,如果以后還遇到這樣的情況怎么辦?沒有必要再做一遍同樣的事情吧!  如果說上述這種情形每天都在發生,或許有點夸張。

但是,如果說整個軟件領域里,數十年來確實都在為了一個目標而奮斗--可復用性(reusability),這看起來似乎并不夸張。

從最早的面向過程的函數庫,到面向對象的程序設計思想,到各種組件技術(如:COM、EJB),到設計模式(design pattern)等等。

而STL也在做著類似的事情,同時在它背后蘊涵著一種新的程序設計思想--泛型化設計(generic programming)。

  繼續上面提到的那個例子,假如你把List或者map完好的保留了下來,正在暗自得意。

且慢,如果下一回的List里放的不是浮點數而是整數呢?如果你所實現的Map在效率上總是令你不太滿意并且有時還會出些bug呢?你該如何面對這些問題?使用STL是一個不錯的選擇,確實如此,STL可以漂亮地解決上面提到的這些問題,盡管你還可以尋求其他方法。

  說了半天,到底STL是什么東西呢?  STL(Standard Template Library),即標準模板庫,是一個具有工業強度的,高效的C 程序庫。

它被容納于C 標準程序庫(C Standard Library)中,是ANSI/ISO C 標準中最新的也是極具革命性的一部分。

該庫包含了諸多在計算機  從邏輯層次來看,在STL中體現了泛型化程序設計的思想(generic programming),引入了諸多新的名詞,比如像需求(requirements),概念(concept),模型(model),容器(container),算法(algorithmn),迭代子(iterator)等。

與OOP(object-oriented programming)中的多態(polymorphism)一樣,泛型也是一種軟件的復用技術。

  從實現層次看,整個STL是以一種類型參數化(type parameterized)的方式實現的,這種方式基于一個在早先C 標準中沒有出現的語言特性--模板(template)。

如果查閱任何一個版本的STL源代碼,你就會發現,模板作為構成整個STL的基石是一件千真萬確的事情。

除此之外,還有許多C 的新特性為STL的實現提供了方便。

  不知你對這里一下子冒出這么多術語做何感想,希望不會另你不愉快。

假如你對它們之中的大多數不甚了解,敬請放心,在后續內容中將會對這些名詞逐一論述。

正如開頭所提到的。

  有趣的是,對于STL還有另外一種解釋--STepanov Lee,前者是指Alexander Stepanov,STL的創始人;而后者是Meng Lee,她也是使STL得以推行的功臣,第一個STL成品就是他們合作完成的。

這一提法源自1995年3月,Dr.Dobb's Journal特約記者, 著名技術書籍作家Al Stevens對Alexander Stepanov的一篇專訪。

  1.2 追根溯源:STL的歷史學院教授David Musser共同開發了一種叫做Tecton的語言。

盡管這次嘗試最終沒有取得實用性的成果,但卻給了Stepanov很大的啟示。

  在結識新朋友的時候,大多數人總是忍不住想了解對方的過去。

本節將帶您簡單回顧一下STL的過去。

  被譽為STL之父的Alexander Stepanov,出生于蘇聯莫斯科,早在20世紀70年代后半期,他便已經開始考慮,在保證效率的前提下,將算法從諸多具體應用之中抽象出來的可能性,這便是后來泛型化思想的雛形。

為了驗證自己的思想,他和紐約州立大學教授Deepak Kapur,倫塞里爾技術  在隨后的幾年中,他又和David Musser等人先后用Schema語言(一種Lisp語言的變種)和Ada語言建立了一些大型程序庫。

這其間,Alexander Stepanov開始意識到,在當時的面向對象程序設計思想中所存在的一些問題,比如抽象數據類型概念所存在的缺陷。

Stepanov希望通過對軟件領域中各組成部分的分類,逐漸形成一種軟件設計的概念性框架。

  1987年左右,在貝爾實驗室工作的Alexander Stepanov開始首次采用C 語言進行泛型軟件庫的研究。

但遺憾的是,當時的C 語言還沒有引入模板(template)的語法,現在我們可以清楚的看到,模板概念之于STL實現,是何等重要。

是時使然,采用繼承機制是別無選擇的。

盡管如此,Stepanov還是開發出了一個龐大的算法庫。

與此同時,在與Andrew Koenig(前ISO C 標準化委員會主席)和Bjarne Stroustrup(C 語言的創始人)等頂級大師們的共事過程中,Stepanov開始注意到C/C 語言在實現其泛型思想方面所具有的潛在優勢。

就拿C/C 中的指針而言,它的靈活與高效運用,使后來的STL在實現泛型化的同時更是保持了高效率。

另外,在STL中占據極其重要地位的迭代子概念便是源自于C/C 中原生指針( native pointer)的抽象。

  1988年,Alexander Stepanov開始進入惠普的Palo Alto實驗室工作,在隨后的4年中,他從事的是有關磁盤驅動器方面的工作。

直到1992年,由于參加并主持了實驗室主任Bill Worley所建立的一個有關算法的研究項目,才使他重新回到了泛型化算法的研究工作上來。

項目自建立之后,參與者從最初的8人逐漸減少,最后只剩下兩個人--Stepanove本人和Meng Lee。

經過長時間的努力,最終,信念與汗水所換來的是一個包含有大量數據結構和算法部件的龐大運行庫。

這便是現在的STL的雛形(同時也是STL的一個實現版本--HP STL)。

  1993年,當時在貝爾實驗室的Andrew Koenig看到了Stepanove的研究成果,很是興奮。

在他的鼓勵與幫助下,Stepanove于是年9月的圣何塞為ANSI/ISO C 標準委員會做了一個相關演講(題為The Science of C Programming),向委員們講述了其觀念。

然后又于次年3月,在圣迭戈會議上,向委員會提交了一份建議書,以期使STL成為C 標準庫的一部分。

盡管這一建議十分龐大,以至于降低了被通過的可能性,但由于其所包含的新思想,投票結果以壓倒多數的意見認為推遲對該建議的決定。

  隨后,在眾人的幫助之下,包括Bjarne Stroustrup在內,Stepanove又對STL進行了改進。

同時加入了一個封裝內存模式信息的抽象模塊,也就是現在STL中的allocator,它使STL的大部分實現都可以獨立于具體的內存模式,從而獨立于具體平臺。

在同年夏季的滑鐵盧會議上,委員們以80%贊成,20%反對,最終通過了提案,決定將STL正式納入C 標準化進程之中,隨后STL便被放進了會議的工作文件中。

自此,STL終于成為了C 家族中的重要一員。

  此后,隨著C 標準的不斷改進,STL也在不斷地作著相應的演化。

直至1998年,ANSI/ISO C 標準正式定案,STL始終是C 標準中不可或缺的一大部件。

  1.3 千絲萬縷的聯系  1.3.1 STL和C   1.3.2 STL和C 標準函數庫1.3.3 STL和GP,GP和OOP   1.4 STL的不同實現版本  1.4.1 HP STL  1.4.2 P.J. Plauger STLhttp://www.dinkumware.comVisualStudiohashset容器。

1.4.3 Rouge Wave STLhttp://www.rougewave.com源代碼C:Program FilesBorlandCbuilder6Includeoldstl)。

1.4.4 STLporthttp://www.stlport.org免費下載VC中的STL要快。

比Rouge Wave STL更符合標準,也更容易移植。

Borland C Builder已經在其6.0版中加入了對STLport的支持,它使用的STLport就是4.5版的,C Builder 6.0同時還提供了STLport的使用說明。

你可以在C Builder的IncludeStlport子目錄下找到所有頭文件(比如:C:Program FilesBorlandCbuilder6IncludeStlport)。

1.4.5 SGI STLhttp://www.sgi.com新版本是3.3。

  在你了解了STL的過去之后,一些名詞開始不斷在你的大腦中浮現,STL、C 、C 標準函數庫、泛型程序設計、面向對象程序設計,這些概念意味著什么?他們之間的關系又是什么?如果你想了解某些細節,這里也許有你希望得到的答案。

  沒有C 語言就沒有STL,這么說毫不為過。

一般而言,STL作為一個泛型化的數據結構和算法庫,并不牽涉具體語言(當然,在C 里,它被稱為STL)。

也就是說,如果條件允許,用其他語言也可以實現之。

這里所說的條件,主要是指類似于模板這樣的語法機制。

如果你沒有略過前一節內容的話,應該可以看到,Alexander Stepanov在選擇C 語言作為實現工具之前,早以采用過多種php?/

版權聲明:本文由 鏡書雁 整理編輯。

原標題:從零開始學吉他輕松入門,月琴入門

轉載注明出處:http://www.dn9ww09s.icu/fault/13620.html

文章評論

    共有條評論來說兩句吧...

    用戶名:

    驗證碼:

作者推薦

  • 淘寶時光機何時建立,淘寶時光機 何時推出

    淘寶時光機何時建立,淘寶時光機 何時推出 相關圖片淘寶店鋪時光機機jk是山嗎近日,淘寶網正式推出雙11時光機功能。我相信你們不知道淘寶雙11時光機是什么。接下來,超人軟件編輯還想介紹一下如何玩淘寶雙11時光機。請不要誤會感興...

  • html元素居中,css元素居中的方式

    html元素居中,css元素居中的方式 相關圖片html怎么讓div居中HTML元素在其父元素上水平居中的方法:方法1:代碼如下:div class=wrap divclass=left-right-middle1 left andhtml中左右居中...

  • 潮自拍背景虛化在哪調,潮自拍背景虛化怎么設置

    潮自拍背景虛化在哪調,潮自拍背景虛化怎么設置 相關圖片輕顏相機怎么把背景虛化潮人自拍作為一種強大的拍照工具,自然受到所有時尚男女的喜愛。但是你知道如何虛擬化背景嗎?如何調節亮度?現在,超人軟件編輯想給大家介紹一下,關...

  • 微信為什么沒有搖一搖功能,微信搖一搖功能

    微信為什么沒有搖一搖功能,微信搖一搖功能 相關圖片怎么關閉微信搖一搖功能在介紹移動網站shake功能代碼之前,HTML5的deviceorientation做了兩個聲明:下面的代碼可以直接運行,當然不要忘記引用jQuery。代碼如下有沒有搖一搖...

  • 蘋果8按鍵壞了怎么截圖,蘋果home鍵壞了如何截圖

    蘋果8按鍵壞了怎么截圖,蘋果home鍵壞了如何截圖 相關圖片iphone沒home怎么截屏與使用電源和音量鍵的Android屏幕截圖不同,iPhone的屏幕截圖使用電源和主控鍵。盡管iPhone的質量控制在移動行業被認為是非常出色的,但仍有用戶偶爾會蘋果手機不按...

  • 炫酷文字圖片,文字背景

    炫酷文字圖片,文字背景 相關圖片霸氣文字控在網頁設計中,如果處理好網站主頁的顏色,可以使整個網站變得更好。巧妙地運用一些交互效果,不僅可以使網頁瞬間變得明亮,而且在提高用戶感知和感官體驗方面發揮...

  • 蘋果日記本軟件哪個好,蘋果手機日記本軟件哪個好

    蘋果日記本軟件哪個好,蘋果手機日記本軟件哪個好 相關圖片日記本哪個軟件好用很多人仍然保持著記日記的習慣,但使用物理記事本不僅不方便,而且不安全。現在,除了空間和博客,你還有另一個選擇,在你的日記中留下你寶貴的記憶。小編...

  • 魯D,摩拜單車

    魯D,摩拜單車 相關圖片摩拜單車怎么用今天,想必各位小伙伴都可以感受到生活中濃郁的萬圣節氣息了吧!摩拜單車官方就為各位推出了拯救僵尸車活動。那么摩拜拯救僵尸車怎么玩呢?下面,超人軟件小編就為...

  • 底片有什么用,底片

    底片有什么用,底片 相關圖片底片什么意思效果如下:  在AS3中顯示對象都有一個transform屬性,設置這個屬性可以改變顯示對象的大小,旋轉,顏色等特性.transform屬性還有它自已的屬性,其底片效果...

  • 貓眼電影卡怎么查余額,貓眼電影卡

    貓眼電影卡怎么查余額,貓眼電影卡 相關圖片貓眼電影折扣卡劃算嗎如今,許多年輕人在購買電影票時選擇使用貓眼電影。你知道怎么檢查貓眼電影的平衡嗎?現在,超人軟件編輯想為您介紹如何為貓眼電影充電。讓我們看看如何...

熱評文章

  • 抖音水印在線解析本地,抖音怎么設置不要水印

    抖音水印在線解析本地,抖音怎么設置不要水印 相關圖片拍抖音怎么不要水印作為一款功能強大的視頻軟件,自助餐深受很多年輕人的喜愛。最近,很多用戶和朋友都說,他們想知道如何去除嘰嘰喳喳的聲音和如何去除水。增加了“o-試驗”。...

  • 同一個企業釘釘怎么拉黑,釘釘怎么拉黑不了同事

    同一個企業釘釘怎么拉黑,釘釘怎么拉黑不了同事 相關圖片釘釘郵箱加黑名單如今,越來越多的企業開始用釘子來管理員工。我相信很多人想知道離開公司后如何設置黑名單,以及如何退出以前的公司?現在,讓我們跟隨超人軟件編輯器學習如...

  • 顏色和光澤鮮艷,色彩鮮艷光澤耀眼

    顏色和光澤鮮艷,色彩鮮艷光澤耀眼 相關圖片形容顏色光澤第一步:畫一個圓圈開始焰火-設置背景為黑色并在畫布上畫一個圓圈第二步:在圖像圓圈內添加徑向漸變。梯度法選擇徑向,顏色填充值為××000000-××ffffff。形容顏色和光...

  • 好用的手機動態桌面,手機動態桌面哪個好

    好用的手機動態桌面,手機動態桌面哪個好 相關圖片手機比較好用的動態壁紙軟件我已經習慣了一成不變的移動桌面,即使是各種各樣的壁紙也不能讓你覺得手機有一些新的創意和美感,所以現在是時候需要一個移動動態桌面來讓你的移...

  • 芝麻信用能干什么,芝麻信用能做什么

    芝麻信用能干什么,芝麻信用能做什么 相關圖片芝麻信用658能干什么大多數用戶的芝麻信用評分在600-700分左右,但也有一批人的芝麻信用評分已經達到750分或以上的高分。事實上,自去年校園日記風波以來,支付寶的芝麻信用評分為...

  • 炫酷的網頁,網頁炫酷效果

    炫酷的網頁,網頁炫酷效果 相關圖片登錄頁面炫酷特效代碼在過去,網站的創造性導航喜歡在大小、形式、顏色和排版上耍花招。現在,隨著時代的發展,它將增添酷炫的動感效果。例如,今天的網站群中,有很多學生在...

  • 如何開啟走路模式,開啟走路模式

    如何開啟走路模式,開啟走路模式 相關圖片導航怎么設置騎車走路模式古董已經成為許多人記錄自己動作的工具。當他們感覺不舒服的時候,他們可以將他們的運動模式改為步行模式。如何設置咕咚的行走方式?如何記錄咕咚的...

  • 實現了三個效果,實現了效果

    實現了三個效果,實現了效果 相關圖片價值實現的效果我們在頁面右側看到了很多浮動效果。第一類是QQ聯系人面板、對聯廣告等,大部分是基于JavaScript的動態效果。今天,我想在右邊分享一個浮動效果,它只需要CS將目的實...

  • feedback可以刪除嗎,feedback刪除不了

    feedback可以刪除嗎,feedback刪除不了 相關圖片ios如何刪除feedback一些iPhone用戶在手機上發現了一個名為feedback的軟件。很多人認為它是有毒的,所以他們問如何刪除它。那么,反饋是流氓軟件嗎?如果不是,反饋是什么樣的軟怎么移...

  • 菜單圖標放大,響應式放大菜單

    菜單圖標放大,響應式放大菜單 相關圖片屏幕菜單如何放大這個例子的想法是使用mask函數來制作highlight按鈕。添加代碼以控制菜單的切換效果第1部分使突出顯示按鈕(1)創建新的600300像素空白文檔,幀速率為本菜單加大字體...

關注微信

变脸官网查询