導航:首頁 > 源碼編譯 > stl庫需要單獨編譯嗎

stl庫需要單獨編譯嗎

發布時間:2022-05-26 17:02:03

⑴ 自己實現一個stl庫,應該從哪裡開始著手比較好

先為STL編寫測試用例;然後看《泛型編程與STL》的前兩篇;最後根據《泛型編程與STL》第三篇的規范,實現一個STL庫。實現期間可以參考《STL源碼剖析》。

⑵ C++ STL和Boost庫,在實際開發中,應用的多嗎主要是哪些

STL用的最多。
主要是常用容器用的最多。
因為介面簡單統一,效率高,都是經典數據結構。
又是每個編譯器都自帶的,也就是說它們本身就是語言的一部分。
各個編譯器都支持。
Boost就不一樣了,用的遠沒有STL多,原因有下面幾個方面
不是語言的一部分,所以編譯器不自帶,需要加入到工程,僅僅這個就很蠻煩
Boost庫先不說是否源碼編譯使用,光是頭文件就很多,很難單獨使用某個子庫而不包含全部頭文件
只有少數高手可以做到,大多數開發者愛莫能助。
大多數人使用僅僅想使用其中幾個很小的功能,但是卻要包含全部頭文件。所以大多都自己實現了,反而更適合自己。
有些場景適合用Boost
某些Boost子庫本身很優秀,市面上找不到更好的更小的庫替代。
因為歷史原因,之前的開發就使用了Boost庫。

⑶ stl是靜態編譯的可執行文件中了嗎

靜態編譯與動態編譯的區別: 1、動態編譯的可執行文件需要附帶一個的動態鏈接庫,在執行時,需要調用其對應動態鏈接庫中的命令。 所以其優點一方面是縮小了執行文件本身的體積,另一方面是加快了編譯速度,節省了系統資源。 缺點一是哪怕是很簡...

⑷ C++ 中STL和 數據結構 的問題

當然要學。
數據結構教授的是一些演算法的思想,屬於基本知識,而STL僅僅是在應用上實現了其中的某些演算法。
這就好比,雖然我們有了計算器,但是還要學習加減乘除,一樣的道理。
STL沒有提供很復雜的東西,例如我們可能需要做N叉樹,這玩意是STL中沒有的,還是需要學好數據結構,然後根據其中的思想實現(當然實現中,可以藉助STL工具)。

⑸ 如何學習C++的STL或者Boost庫

1.STL是對基本數據結構演算法的實現。BOOST是對STL的擴充,它加入了的智能指針,圖操作等等很多的模塊。

2.這兩個庫都是在C++標准委員會的指導下制定的。STL包含了常用的演算法和集合類型,並採用了泛型的思想來實現。boost是對STL的擴充,是一個功能更加強大,更實用的庫。所以作為初學者,還是先掌握STL好,需要寫應用性程序時,再研究boost庫。

⑹ 什麼是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也許可以簡單地視為一個哲學觀點,但決不僅僅如此。它包括了一套完整的教育方法,這個方法包含生活中的科學技術和不僅是學校師生的還有普通市民和政治家在內的所有人的思想。

為了達到普及科學技術的要求,科學技術的排它性和教師\科學家對科學教育的態度要根本轉變。

課堂中的科學教育要從教師為主導、以教學大綱為核心的教育方式中解脫出來,代之以學生為中心來設計、指導和進行組織教學。為了使學生全身心投入學習動機是非常重要的而且這將只有在科學技術成為學生日常生活的需要時才能得到激發。

考慮到這些,我們現在是現代世界的一部分,這種意識比以前更為強烈,知識的獲取與事實的記憶日益無關。一個微型行動電話能夠直接接入網際網路。這是能夠在我們的指尖表達出一些事實信息。結果是學生在大量的事實學習(這是很快過時的知識)的思維負擔是明顯無意義的。

一旦這些負擔被減輕了,全體學生親自感受科學和技術的潛能就能被發掘出來。科學和技術不再被看作僅僅是』最聰明的』學生的寶貝。批判性思維得到解放。這些能揭示挑戰不可靠信息和無確實根據的個人觀點的思維方法,不管這些觀點是來自』專家』,還是廣告代理商或者政治家們。

現存的許多科學技術的排它性營造了道德和價值觀來自於藝術和人文的氛圍。實際上許多當前最亟待解決的道德和價值觀問題就包含了科學和技術,而且在現實中存在著,在民主社會,公眾的輿論是重要的。

基於科學素養的教育目標不是培養科學家,而是培養具有科學素養的公民。科學技術意識為培養高素質的勞動力、有政治覺悟的公民提供基礎同時也為那些打算成為科學家、工程師或技術員的人提供基礎。

TS2000+(技術科學)打算為小學教師提供實用性的入門知識。其中為課堂教學設計了許多挑戰和主意。根據他們自己的經驗,作者討論活動的可能結果,但是從不直接給出』答案』。這些案例可以被每個人自由應用並且按照他們的願望進行改編。

TS2000(技術科學)是非說明性的而且在科學素養觀上看來起來是領先於新時代的。
http://www.risechina.org/jishukxw/backgroung%20information/heshenmeshiSTL.htm

⑺ 如何在android app中使用STL庫

方法:

1.在jni目錄下新建Application.mk; 加入 APP_STL := stlport_static右邊的值還可以換成下面幾個:

system - 使用默認最小的C++運行庫,這樣生成的應用體積小,內存佔用小,但部分功能將無法支持

stlport_static - 使用STLport作為靜態庫,這項是Android開發網極力推薦的

stlport_shared - STLport作為動態庫,這個可能產生兼容性和部分低版本的Android固件,目前不推薦使用。

gnustl_static - 使用 GNU libstdc++ 作為靜態庫

默認情況下STLPORT是不支持C++異常處理和RTTI,所以不要出現 -fexceptions 或-frtti;如果真的需要,可以使用gnustl_static來支持標准C++的特性,但生成的文件體積會偏大,運行效率會低一些。

支持C++異常處理,在Application.mk中加入 LOCAL_CPPFLAGS +=-fexceptions這句,同理支持RTTI,則加入LOCAL_CPPFLAGS +=-frtti,這里再次提醒大家,第二條說的使用gnustl靜態庫,而不是stlport。

強制重新編譯 STLPort ,在Application.mk中加入STLPORT_FORCE_REBUILD := true可以強制重新編譯STLPort源碼,由於一些原因可能自己需要修改下STLPort庫,一般普通的開發者無需使用此項

2. 在要使用STL的cpp文件中包含相關的頭文件,並且使用using namespace std;

⑻ c語言裡面可以用stl么

不可以。
STL即Standard Template Library,也就是標准模板庫。是針對C++語言進行開發的,裡面使用了重載,模板等等技術。
這些技術都是C++所特有的,C語言並不支持。
所以在C語言中無法使用STL。
當C語言編程中需要類似功能時,可以自行實現類似的,C語言可用的函數介面。

⑼ stl是什麼文件

STL = Standard Template Library,標准模板庫,惠普實驗室開發的一系列軟體的統稱。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普實驗室工作時所開發出來的。這可能是一個歷史上最令人興奮的工具的最無聊的術語。從根本上說,STL是一些「容器」的集合,這些「容器」有list,vector,set,map等,STL也是演算法和其他一些組件的集合。這里的「容器」和演算法的集合指的是世界上很多聰明人很多年的傑作。STL的目的是標准化組件,這樣就不用重新開發,可以使用現成的組件。STL現在是C++的一部分,因此不用額外安裝什麼。

目錄

標准模板庫演算法
容器
迭代器
科學和技術素養
司太立特合金
中國星際戰隊聯賽
北京大學國際法學院
一種3D模型文件格式
台達PLC命令
夢幻西遊門派
操作應用標准模板庫 演算法
容器
迭代器
科學和技術素養
司太立特合金
中國星際戰隊聯賽
北京大學國際法學院
一種3D模型文件格式
台達PLC命令
夢幻西遊門派
操作應用展開 編輯本段標准模板庫
STL被內建在你的編譯器之內。 在C++標准中,STL被組織為下面的13個頭文件:<algorithm>、<deque>、<functional>、<iterator>、<vector>、<list>、<map>、<memory>、<numeric>、<queue>、<set>、<stack>和<utility>。
演算法
大家都能取得的一個共識是函數庫對數據類型的選擇對其可重用性起著至關重要的作用。舉例來說,一個求方根的函數,在使用浮點數作為其參數類型的情況下的可重用性肯定比使用整型作為它的參數類性要高。而C++通過模板的機制允許推遲對某些類型的選擇,直到真正想使用模板或者說對模板進行特化的時候,STL就利用了這一點提供了相當多的有用演算法。它是在一個有效的框架中完成這些演算法的——你可以將所有的類型劃分為少數的幾類,然後就可以在模版的參數中使用一種類型替換掉同一種類中的其他類型。 STL提供了大約100個實現演算法的模版函數,比如演算法for_each將為指定序列中的每一個元素調用指定的函數,stable_sort以你所指定的規則對序列進行穩定性排序等等。這樣一來,只要我們熟悉了STL之後,許多代碼可以被大大的化簡,只需要通過調用一兩個演算法模板,就可以完成所需要的功能並大大地提升效率。 演算法部分主要由頭文件<algorithm>,<numeric>和<functional>組成。<algorithm>是所有STL頭文件中最大的一個(盡管它很好理解),它是由一大堆模版函數組成的,可以認為每個函數在很大程度上都是獨立的,其中常用到的功能范圍涉及到比較、交換、查找、遍歷操作、復制、修改、移除、反轉、排序、合並等等。<numeric>體積很小,只包括幾個在序列上面進行簡單數學運算的模板函數,包括加法和乘法在序列上的一些操作。<functional>中則定義了一些模板類,用以聲明函數對象。
容器
在實際的開發過程中,數據結構本身的重要性不會遜於操作於數據結構的演算法的重要性,當程序中存在著對時間要求很高的部分時,數據結構的選擇就顯得更加重要。 經典的數據結構數量有限,但是我們常常重復著一些為了實現向量、鏈表等結構而編寫的代碼,這些代碼都十分相似,只是為了適應不同數據的變化而在細節上有所出入。STL容器就為我們提供了這樣的方便,它允許我們重復利用已有的實現構造自己的特定類型下的數據結構,通過設置一些模版類,STL容器對最常用的數據結構提供了支持,這些模板的參數允許我們指定容器中元素的數據類型,可以將我們許多重復而乏味的工作簡化。 容器部分主要由頭文件<vector>,<list>,<deque>,<set>,<map>,<stack>和<queue>組成。對於常用的一些容器和容器適配器(可以看作由其它容器實現的容器),可以通過下表總結一下它們和相應頭文件的對應關系。 數據結構 描述 實現頭文件
向量(vector) 連續存儲的元素 <vector>
列表(list) 由節點組成的雙向鏈表,每個結點包含著一個元素 <list>
雙隊列(deque) 連續存儲的指向不同元素的指針所組成的數組 <deque>
集合(set) 由節點組成的紅黑樹,每個節點都包含著一個元素,節點之間以某種作用於元素對的謂詞排列,沒有兩個不同的元素能夠擁有相同的次序 <set>
多重集合(multiset) 允許存在兩個次序相等的元素的集合 <set>
棧(stack) 後進先出的值的排列 <stack>
隊列(queue) 先進先出的值的排列 <queue>
優先隊列(priority_queue) 元素的次序是由作用於所存儲的值對上的某種謂詞決定的的一種隊列 <queue>
映射(map) 由{鍵,值}對組成的集合,以某種作用於鍵對上的謂詞排列 <map>
多重映射(multimap) 允許鍵對有相等的次序的映射 <map>

迭代器
下面要說的迭代器從作用上來說是最基本的部分,可是理解起來比前兩者都要費力一些(至少筆者是這樣)。軟體設計有一個基本原則,所有的問題都可以通過引進一個間接層來簡化,這種簡化在STL中就是用迭代器來完成的。概括來說,迭代器在STL中用來將演算法和容器聯系起來,起著一種黏和劑的作用。幾乎STL提供的所有演算法都是通過迭代器存取元素序列進行工作的,每一個容器都定義了其本身所專有的迭代器,用以存取容器中的元素。 迭代器部分主要由頭文件<utility>,<iterator>和<memory>組成。<utility>是一個很小的頭文件,它包括了貫穿使用在STL中的幾個模板的聲明,<iterator>中提供了迭代器使用的許多方法,而對於<memory>的描述則十分的困難,它以不同尋常的方式為容器中的元素分配存儲空間,同時也為某些演算法執行期間產生的臨時對象提供機制,<memory>中的主要部分是模板類allocator,它負責產生所有容器中的默認分配器。

⑽ STL是什麼怎麼使用C++中的STL

STL(standard template libary),標准模板庫。
這是C++標準的一部分。關於這個庫有不少歷史可以說,侯捷的《STL源碼剖析》講了不少。STL有好幾種不同的實現,微軟也有自己的實現。
關於使用,比如你用了下面的語句:
#include <vector>
就是使用了標准模板庫里的 vector.
然後你這樣聲明向量:
vector<int> a; //向量a包含的元素是int型的
vector<double> b; //向量b包含的元素是double型的
你可以查找對應的頭文件,它們都是以源碼形式出現的,不過裡面的符號定義的讓人眼花繚亂,還是找書看比較好。
標准模板庫包含了數據結構和演算法等方面的內容,比較復雜,學習之前要有十足下信心。

閱讀全文

與stl庫需要單獨編譯嗎相關的資料

熱點內容
java單擊事件 瀏覽:641
絕對尺寸編程法 瀏覽:265
伺服器共享文件夾中病毒 瀏覽:35
哪個app會員看綜藝最全 瀏覽:761
程序員朋友圈招聘 瀏覽:339
細細的小木棍怎麼做解壓玩具 瀏覽:36
不要惹程序員的視頻 瀏覽:995
碼高編程如何加盟 瀏覽:756
程序員好處有哪些 瀏覽:954
c語言編譯後的程序 瀏覽:12
公交卡單片機 瀏覽:745
減壓縮軟體下載 瀏覽:300
51單片機復位電路有哪兩種 瀏覽:923
et2008加密狗教程 瀏覽:965
安卓手機用什麼錄制高清視頻 瀏覽:749
cadim命令如何應用 瀏覽:949
免費ntp時鍾伺服器地址 瀏覽:686
域名如何與雲伺服器綁定 瀏覽:808
linuxjava環境搭建教程 瀏覽:128
單片機串口如何引起中斷 瀏覽:272