導航:首頁 > 源碼編譯 > 通用演算法stl

通用演算法stl

發布時間:2022-11-29 04:15:37

A. 使用STL通用演算法remove()從list中刪除元素

這排版讓人蛋疼,……

B. STL是什麼意思

什麼是STL呢?STL就是Standard
Template
Library,標准模板庫。這可能是一個歷史上最令人興奮的工具的最無聊的術語。從根本上說,STL是一些「容器」的集合,這些「容器」有list,vector,set,map等,STL也是演算法和其他一些組件的集合。這里的「容器」和演算法的集合指的是世界上很多聰明人很多年的傑作。
STL的目的是標准化組件,這樣就不用重新開發,可以使用現成的組件。STL現在是C++的一部分,因此不用額外安裝什麽。它被內建在你的編譯器之內。因為STL的list是一個簡單的容器,所以我打算從它開始介紹STL如何使用。如果你懂得了這個概念,其他的就都沒有問題了。另外,list容器是相當簡單的,我們會看到這一點。
在本文中我們將會看到如何定義和初始化一個list,計算它的元素的數量,從一個list里查找元素,刪除元素,和一些其他的操作。要作到這些,我們將會討論兩個不同的演算法,STL通用演算法都是可以操作不止一個容器的,而list的成員函數是list容器專有的操作。
這是三類主要的STL組件的簡明綱要。STL容器可以保存對象,內建對象和類對象。它們會安全的保存對象,並定義我們能夠操作的這個對象的介面。放在蛋架上的雞蛋不會滾到桌上。它們很安全。因此,在STL容器中的對象也很安全。我知道這個比喻聽起來很老土,但是它很正確。
STL演算法是標准演算法,我們可以把它們應用在那些容器中的對象上。這些演算法都有很著名的執行特性。它們可以給對象排序,刪除它們,給它們記數,比較,找出特殊的對象,把它們合並到另一個容器中,以及執行其他有用的操作。
http://www.yesky.com/255/1910755.shtml
還有一種解釋:
什麼是STL?
STL代表科學和技術素養,但這個短語的背後隱藏的重要意義是對所有人而言。
STL也許可以簡單地視為一個哲學觀點,但決不僅僅如此。它包括了一套完整的教育方法,這個方法包含生活中的科學技術和不僅是學校師生的還有普通市民和政治家在內的所有人的思想。
為了達到普及科學技術的要求,科學技術的排它性和教師\科學家對科學教育的態度要根本轉變。
課堂中的科學教育要從教師為主導、以教學大綱為核心的教育方式中解脫出來,代之以學生為中心來設計、指導和進行組織教學。為了使學生全身心投入學習動機是非常重要的而且這將只有在科學技術成為學生日常生活的需要時才能得到激發。
考慮到這些,我們現在是現代世界的一部分,這種意識比以前更為強烈,知識的獲取與事實的記憶日益無關。一個微型行動電話能夠直接接入網際網路。這是能夠在我們的指尖表達出一些事實信息。結果是學生在大量的事實學習(這是很快過時的知識)的思維負擔是明顯無意義的。
一旦這些負擔被減輕了,全體學生親自感受科學和技術的潛能就能被發掘出來。科學和技術不再被看作僅僅是』最聰明的』學生的寶貝。批判性思維得到解放。這些能揭示挑戰不可靠信息和無確實根據的個人觀點的思維方法,不管這些觀點是來自』專家』,還是廣告代理商或者政治家們。
現存的許多科學技術的排它性營造了道德和價值觀來自於藝術和人文的氛圍。實際上許多當前

C. c++ stl 的目的是為了什麼 就是為了寫通用演算法嗎

stl 是標准模板庫,起個簡化作用 也就是程序員可以偷懶,直接調用用別人的代碼,快速實現一些相應的功能。

D. stl 通用演算法中的remove()和list容器的remove()函數是一樣的么

list本來就是鏈表啊 應該不存在大小之說
如果你是跟數組比 你這個說法沒錯

E. 什麼是STL

它是由Alexander Stepanov、Meng Lee和David R Musser在惠普實驗室工作時所開發 出來的。現在雖說它主要出現在C++中,但在被引入C++之前該技術就已經存在了很長的 一段時間。 STL的代碼從廣義上講分為三類:algorithm(演算法)、container(容器)和iterator( 迭代器),幾乎所有的代碼都採用了模板類和模版函數的方式,這相比於傳統的由函數 和類組成的庫來說提供了更好的代碼重用機會。在C++標准中,STL被組織為下面的13個 頭文件:、、、、、、、、、、、和。以下筆者就簡單 介紹一下STL各個部分的主要特點。 二、演算法 大家都能取得的一個共識是函數庫對數據類型的選擇對其可重用性起著至關重要的作用 。舉例來說,一個求方根的函數,在使用浮點數作為其參數類型的情況下的可重用性肯 定比使用整型作為它的參數類性要高。而C++通過模板的機制允許推遲對某些類型的選擇 ,直到真正想使用模板或者說對模板進行特化的時候,STL就利用了這一點提供了相當多 的有用演算法。它是在一個有效的框架中完成這些演算法的——你可以將所有的類型劃分為 少數的幾類,然後就可以在模版的參數中使用一種類型替換掉同一種類中的其他類型。 STL提供了大約100個實現演算法的模版函數,比如演算法for_each將為指定序列中的每一個 元素調用指定的函數,stable_sort以你所指定的規則對序列進行穩定性排序等等。這樣 一來,只要我們熟悉了STL之後,許多代碼可以被大大的化簡,只需要通過調用一兩個算 法模板,就可以完成所需要的功能並大大地提升效率。 演算法部分主要由頭文件,和組成。是所 有STL頭文件中最大的一個(盡管它很好理解),它是由一大堆模版函數組成的,可以認 為每個函數在很大程度上都是獨立的,其中常用到的功能范圍涉及到比較、交換、查找 、遍歷操作、復制、修改、移除、反轉、排序、合並等等。體積很小,只包括 幾個在序列上面進行簡單數學運算的模板函數,包括加法和乘法在序列上的一些操作。 中則定義了一些模板類,用以聲明函數對象。 三、容器 在實際的開發過程中,數據結構本身的重要性不會遜於操作於數據結構的演算法的重要性 ,當程序中存在著對時間要求很高的部分時,數據結構的選擇就顯得更加重要。 經典的數據結構數量有限,但是我們常常重復著一些為了實現向量、鏈表等結構而編寫 的代碼,這些代碼都十分相似,只是為了適應不同數據的變化而在細節上有所出入。ST L容器就為我們提供了這樣的方便,它允許我們重復利用已有的實現構造自己的特定類型 下的數據結構,通過設置一些模版類,STL容器對最常用的數據結構提供了支持,這些模 板的參數允許我們指定容器中元素的數據類型,可以將我們許多重復而乏味的工作簡化 。 容器部分主要由頭文件,,,,,和組成 。對於常用的一些容器和容器適配器(可以看作由其它容器實現的容器),可以通過下 表總結一下它們和相應頭文件的對應關系。 數據結構 描述 實現頭文件 向量(vector) 連續存儲的元素 列表(list) 由節點組成的雙向鏈表,每個結點包含著一個元素 雙隊列(deque) 連續存儲的指向不同元素的指針所組成的數組 集合(set) 由節點組成的紅黑樹,每個節點都包含著一個元素,節點之間以某種作用於 元素對的謂詞排列,沒有兩個不同的元素能夠擁有相同的次序 多重集合(multiset) 允許存在兩個次序相等的元素的集合 棧(stack) 後進先出的值的排列 隊列(queue) 先進先出的執的排列 優先隊列(priority_queue) 元素的次序是由作用於所存儲的值對上的某種謂詞決定的的 一種隊列 映射(map) 由{鍵,值}對組成的集合,以某種作用於鍵對上的謂詞排列 多重映射(multimap) 允許鍵對有相等的次序的映射 四、迭代器 下面要說的迭代器從作用上來說是最基本的部分,可是理解起來比前兩者都要費力一些 (至少筆者是這樣)。軟體設計有一個基本原則,所有的問題都可以通過引進一個間接 層來簡化,這種簡化在STL中就是用迭代器來完成的。概括來說,迭代器在STL中用來將 演算法和容器聯系起來,起著一種黏和劑的作用。幾乎STL提供的所有演算法都是通過迭代器 存取元素序列進行工作的,每一個容器都定義了其本身所專有的迭代器,用以存取容器 中的元素。 迭代器部分主要由頭文件,和組成。是一個很小 的頭文件,它包括了貫穿使用在STL中的幾個模板的聲明,中提供了迭代器使 用的許多方法,而對於的描述則十分的困難,它以不同尋常的方式為容器中的 元素分配存儲空間,同時也為某些演算法執行期間產生的臨時對象提供機制,中的 主要部分是模板類allocator,它負責產生所有容器中的默認分配器。 五、對初學者學習STL的一點建議 對於之前不太了解STL的讀者來說,上面的文字只是十分概括地描述了一下STL的框架, 對您理解STL的機制乃至使用STL所起到的幫助微乎甚微,這不光是因為深入STL需要對C ++的高級應用有比較全面的了解,更因為STL的三個部分演算法、容器和迭代器三部分是互 相牽制或者說是緊密結合的。從概念上講最基礎的部分是迭代器,可是直接學習迭代器 會遇到許多抽象枯燥和繁瑣的細節,然而不真正理解迭代器又是無法直接進入另兩部分 的學習的(至少對剖析源碼來說是這樣)。可以說,適應STL處理問題的方法是需要花費 一定的時間的,但是以此為代價,STL取得了一種十分可貴的獨立性,它通過迭代器能在 盡可能少地知道某種數據結構的情況下完成對這一結構的運算,所以下決心鑽研STL的朋 友們千萬不要被一時的困難擊倒。其實STL運用的模式相對統一,只要適應了它,從一個 STL工具到另一個工具,都不會有什麼大的變化。 對於STL的使用,也普遍存在著兩種觀點。第一種認為STL的最大作用在於充當經典的數 據結構和演算法教材,因為它的源代碼涉及了許多具體實現方面的問題。第二種則認為ST L的初衷乃是為了簡化設計,避免重復勞動,提高編程效率,因此應該是「應用至上」的 ,對於源代碼則不必深究。筆者則認為分析源代碼和應用並不矛盾,通過分析源代碼也 能提高我們對其應用的理解,當然根據具體的目的也可以有不同的側重。

F. C++的STL中提供能在各種容器中通用的演算法,比如插入,刪除,查找,排序等。大約有70種標准演算法。

仔細找點STL、數據結構和演算法的教材,學習一下<algorithm>演算法庫中的各個函數的用法和源代碼。能直接學。

G. 容器的六大組件

STL是標准模板庫,裡麵包含了很多成熟的演算法和數據結構可以直接使用,在工作中經常會用到;六大組件為:容器、演算法、迭代器、仿函數、適配器、空間配置器。可以多看看網上的視頻,比如黑馬程序員的,我畢設都是按照他們項目更改的。這些簡單問題他們也都有系統的解答。
從根本上說,STL是一些「容器」的集合,這些「容器」有list,vector,set,map等,STL也是演算法和其他一些組件的集合。這里的「容器」和演算法的集合指的是世界上很多聰明人很多年的傑作。
STL的目的是標准化組件,這樣就不用重新開發,可以使用現成的組件。STL現在是C++的一部分,因此不用額外安裝什麽。它被內建在你的編譯器之內。因為STL的list是一個簡單的容器,所以我打算從它開始介紹STL如何使用。如果你懂得了這個概念,其他的就都沒有問題了。另外,list容器是相當簡單的,我們會看到這一點。
STL通用演算法都是可以操作不止一個容器的,而list的成員函數是list容器專有的操作。
這是三類主要的STL組件的簡明綱要。STL容器可以保存對象,內建對象和類對象。它們會安全的保存對象,並定義我們能夠操作的這個對象的介面。放在蛋架上的雞蛋不會滾到桌上。它們很安全。因此,在STL容器中的對象也很安全。我知道這個比喻聽起來很老土,但是它很正確。
STL演算法是標准演算法,我們可以把它們應用在那些容器中的對象上。這些演算法都有很著名的執行特性。它們可以給對象排序,刪除它們,給它們記數,比較,找出特殊的對象,把它們合並到另一個容器中,以及執行其他有用的操作。

H. STL是什麼意思

什麼是STL呢?STL就是Standard
Template
Library,標准模板庫。這可能是一個歷史上最令人興奮的工具的最無聊的術語。從根本上說,STL是一些「容器」的集合,這些「容器」有list,vector,set,map等,STL也是演算法和其他一些組件的集合。這里的「容器」和演算法的集合指的是世界上很多聰明人很多年的傑作。
STL的目的是標准化組件,這樣就不用重新開發,可以使用現成的組件。STL現在是C++的一部分,因此不用額外安裝什麽。它被內建在你的編譯器之內。因為STL的list是一個簡單的容器,所以我打算從它開始介紹STL如何使用。如果你懂得了這個概念,其他的就都沒有問題了。另外,list容器是相當簡單的,我們會看到這一點。
在本文中我們將會看到如何定義和初始化一個list,計算它的元素的數量,從一個list里查找元素,刪除元素,和一些其他的操作。要作到這些,我們將會討論兩個不同的演算法,STL通用演算法都是可以操作不止一個容器的,而list的成員函數是list容器專有的操作。
這是三類主要的STL組件的簡明綱要。STL容器可以保存對象,內建對象和類對象。它們會安全的保存對象,並定義我們能夠操作的這個對象的介面。放在蛋架上的雞蛋不會滾到桌上。它們很安全。因此,在STL容器中的對象也很安全。我知道這個比喻聽起來很老土,但是它很正確。
STL演算法是標准演算法,我們可以把它們應用在那些容器中的對象上。這些演算法都有很著名的執行特性。它們可以給對象排序,刪除它們,給它們記數,比較,找出特殊的對象,把它們合並到另一個容器中,以及執行其他有用的操作。
http://www.yesky.com/255/1910755.shtml
還有一種解釋:
什麼是STL?
STL代表科學和技術素養,但這個短語的背後隱藏的重要意義是對所有人而言。
STL也許可以簡單地視為一個哲學觀點,但決不僅僅如此。它包括了一套完整的教育方法,這個方法包含生活中的科學技術和不僅是學校師生的還有普通市民和政治家在內的所有人的思想。
為了達到普及科學技術的要求,科學技術的排它性和教師\科學家對科學教育的態度要根本轉變。
課堂中的科學教育要從教師為主導、以教學大綱為核心的教育方式中解脫出來,代之以學生為中心來設計、指導和進行組織教學。為了使學生全身心投入學習動機是非常重要的而且這將只有在科學技術成為學生日常生活的需要時才能得到激發。
考慮到這些,我們現在是現代世界的一部分,這種意識比以前更為強烈,知識的獲取與事實的記憶日益無關。一個微型行動電話能夠直接接入網際網路。這是能夠在我們的指尖表達出一些事實信息。結果是學生在大量的事實學習(這是很快過時的知識)的思維負擔是明顯無意義的。
一旦這些負擔被減輕了,全體學生親自感受科學和技術的潛能就能被發掘出來。科學和技術不再被看作僅僅是』最聰明的』學生的寶貝。批判性思維得到解放。這些能揭示挑戰不可靠信息和無確實根據的個人觀點的思維方法,不管這些觀點是來自』專家』,還是廣告代理商或者政治家們。
現存的許多科學技術的排它性營造了道德和價值觀來自於藝術和人文的氛圍。實際上許多當前

I. STL的演算法

大家都能取得的一個共識是函數庫對數據類型的選擇對其可重用性起著至關重要的作用。舉例來說,一個求方根的函數,在使用浮點數作為其參數類型的情況下的可重用性肯定比使用整型作為它的參數類型要高。而C++通過模板的機制允許推遲對某些類型的選擇,直到真正想使用模板或者說對模板進行特化的時候,STL就利用了這一點提供了相當多的有用演算法。它是在一個有效的框架中完成這些演算法的——你可以將所有的類型劃分為少數的幾類,然後就可以在模版的參數中使用一種類型替換掉同一種類中的其他類型。
STL提供了大約100個實現演算法的模版函數,比如演算法for_each將為指定序列中的每一個元素調用指定的函數,stable_sort以你所指定的規則對序列進行穩定性排序等等。這樣一來,只要我們熟悉了STL之後,許多代碼可以被大大的化簡,只需要通過調用一兩個演算法模板,就可以完成所需要的功能並大大地提升效率。
演算法部分主要由頭文件<algorithm>,<numeric>和<functional>組成。<algorithm>是所有STL頭文件中最大的一個(盡管它很好理解),它是由一大堆模版函數組成的,可以認為每個函數在很大程度上都是獨立的,其中常用到的功能范圍涉及到比較、交換、查找、遍歷操作、復制、修改、移除、反轉、排序、合並等等。<numeric>體積很小,只包括幾個在序列上面進行簡單數學運算的模板函數,包括加法和乘法在序列上的一些操作。<functional>中則定義了一些模板類,用以聲明函數對象。

閱讀全文

與通用演算法stl相關的資料

熱點內容
計算機演算法書籍推薦 瀏覽:639
主角叫林楓游戲頭盔 瀏覽:47
android畫空心圓 瀏覽:20
中通快運程序員 瀏覽:239
戀聽網 瀏覽:389
新睿雲伺服器輸入憑證登錄不上去 瀏覽:673
新奇書網 瀏覽:529
朝鮮族網站 瀏覽:963
程序員被女嘉賓滅燈 瀏覽:201
假面騎士大電影全部 瀏覽:811
單片機舉例子 瀏覽:157
android編譯3070驅動 瀏覽:635
nginxphpfpm啟動 瀏覽:54
衰鬼撬牆角演員表 瀏覽:699
北鎮加密遮陽網直接生產廠 瀏覽:705
圖紙加密需要密碼 瀏覽:411
linux斷開telnet 瀏覽:760
必要app賣的眼鏡怎麼樣 瀏覽:159
好看的社保aqd 瀏覽:285
cad導出pdf黑白 瀏覽:999