中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

電子商務的就業(yè)方向seo網(wǎng)站優(yōu)化是什么

電子商務的就業(yè)方向,seo網(wǎng)站優(yōu)化是什么,網(wǎng)頁打不開但是微信和qq都可以上,安徽湖濱建設(shè)集團有限公司網(wǎng)站目錄 一、什么是 STL? 二、STL 的版本 三、STL 的 6 大組件和 13 個頭文件 四、學習 STL 的 3 個境界 五、STL 的缺陷 參考資料: STL教程:C STL快速入門(非常詳細) (biancheng.net)。 C STL是什么,有…

目錄

一、什么是 STL?

二、STL 的版本

三、STL 的 6 大組件和 13 個頭文件

四、學習 STL 的 3 個境界

五、STL 的缺陷


參考資料

  1. STL教程:C++ STL快速入門(非常詳細) (biancheng.net)。

  2. C++ STL是什么,有什么用? (biancheng.net)。

  3. C++ STL版本有哪些? (biancheng.net)。

  4. C++ STL基本組成(6大組件+13個頭文件) (biancheng.net)。 ?

?


一、什么是 STL?

STL 是 "Standard Template Library" 的縮寫,中文可譯為 "標準模板庫" 或者 "泛型庫",其包含有大量的類模板和函數(shù)模板,是 C++ 提供的一個基礎(chǔ)模板的集合。

STL 最初由惠普實驗室開發(fā),于 1998 年被認定為國際標準,正式成為 C++標準庫的重要組成部分。

值得一提的是,如今 STL 已完全被內(nèi)置到支持 C++ 的編譯器中,無需額外安裝,這可能也是 STL 被廣泛使用的原因之一。

STL 就位于各個 C++ 的頭文件中,即它并非以二進制代碼的形式提供,而是以源代碼的形式提供

從根本上來說,STL 是一些容器、算法和其他一些組件的集合,所有容器和算法都是總結(jié)了十幾年來算法和數(shù)據(jù)結(jié)構(gòu)的研究成果,匯集了許多計算機專家經(jīng)驗的基礎(chǔ)上實現(xiàn)的,因此可以說,STL 基本上達到了各種存儲方法和相關(guān)算法的高度優(yōu)化。

注意,這里提到的容器,本質(zhì)上就是封裝有數(shù)據(jù)結(jié)構(gòu)的類模板,例如 list、vector、set、map 等。


二、STL 的版本

自 1998 年 ANSI/ISO C++ 標準正式定案,C++ STL 規(guī)范版本正式通過以后,由于其是開源的,各個 C++ 編譯器廠商在此標準的基礎(chǔ)上,實現(xiàn)了滿足自己需求的 C++ STL 泛型庫,主要包括:

  • HP STL

    HP STL 是 Alexandar Stepanov(STL 標準模板庫之父)在惠普 Palo Alto 實驗室工作時,與 Meng Lee 合作完成的。HP STL 是開放源碼的,即任何人都可以免費使用、復制、修改、發(fā)布和銷售該軟件以及相關(guān)文檔,但前提是必須在相關(guān)文檔中,加入 HP STL 版本信息和授權(quán)信息。

    HP STL 是 C++ STL 的第一個實現(xiàn)版本,其他版本的 C++ STL 一般是以 HP STL 為藍本實現(xiàn)出來的。不過,現(xiàn)在已經(jīng)很少直接使用此版本的 STL 了。

  • SGI STL

    Stepanov 在離開 HP 之后,就加入到了 SGI 公司,并和 Matt Austern 等人共同開放了 SGI STL。嚴格意義上來說,它是 HP STL 的一個繼承版本。和 HP STL 一樣,SGI STL 也是開源的,其源代碼的可讀性非常好,并且任何人都可以修改和銷售它。

    注意,SGI STL 只能算是一個 "民間" 版本,因此并不是所有支持 C++ 的編譯器都支持 SGI STL,唯一能確定的是,GCC(Linux 下的 C++ 編譯器)是支持的,所以 SGI STL 在 Linux 平臺上的性能非常出色

  • STLport

    為了使 SGI STL 的基本代碼適用于 VC++ 和 C++ Builder 等多種編譯器,俄國人 Boris Fomitchev 建立了一個 free 項目來開發(fā) STLport,此版本 STL 是開放源代碼的。

  • PJ STL

    PJ STL(全稱 P.J Plauger STL)是由 P.J.Plauger(美國人,1965 年畢業(yè)于普林斯頓大學,物理學專業(yè)學士)參照 HP STL 實現(xiàn)出來的,也是 HP STL 的一個繼承版本,因此該頭文件不僅包含 HP STL 的相關(guān)授權(quán)信息,同時還有 P.J.Plauger 本人的授權(quán)信息。

    其實 PJ STL 是 P.J.Plauger 公司的產(chǎn)品,盡管該公司當時只有 3 個人。

    PJ STL 被 Visual C++ 編譯器所采用,但和 PH STL、SGI STL 不同的是,PJ STL 并不是開源的

  • Rouge Wave STL

    該版本的 STL 是由 Rouge Wave 公司開放的,也是繼承 HP STL 的一個版本,它也不是開源的。

    Rouge Wave STL 用于 Borland C++ Builder 編譯器中,我們可以在 C++ Builder 的 Include 子目錄中找到該 STL 的所有頭文件

    值得一提的是,盡管 Rouge Wave STL 的性能不是很好,但 C++ Builder 對 C++ 語言標準的支持還算不錯,所以一定程度上使 Rouge Wave STL 的表現(xiàn)得以改善。

    遺憾的是,由于 Rouge Wave STL 長期沒有更新且不完全符合標準,因此 Rouge Wave STL 在 6.0 版本時改用 STLport 版本(之后的版本也都采用了 STLport),不過考慮到和之前版本的兼容,6.0 版本中依舊保留了 Rouge Wave STL。

    Rouge Wave 公司在 C++ 程序庫領(lǐng)域應該說是大名鼎鼎,對 C++ 標準化的過程出力甚多。不過 Rouge Wave STL 版本不僅更新頻率慢,費用還高,基于這兩個原因,Borland 在 6.0 版本決定奇用 Rouge Wave STL 而改用 STLport。


三、STL 的 6 大組件和 13 個頭文件

通常認為,STL 是由容器、算法、迭代器、函數(shù)對象、適配器、內(nèi)存分配器這 6 個部分構(gòu)成,其中后面 4 個部分是為前面 2 個部分服務的,它們各自的含義如下表所示

STL 的組成部分含義
容器(Containers)一些封裝數(shù)據(jù)結(jié)構(gòu)的類模板,例如 vector 向量容器、list 列表容器等
算法(Algorithms)STL 提供了非常多(大約 100 個)的數(shù)據(jù)結(jié)構(gòu)算法,它們都被設(shè)計成一個個的函數(shù)模板,這些算法在 std 命名空間中定義,其中大部分算法都包含在頭文件 <algorithm> 中,少部分位于頭文件 <numeric> 中
迭代器(Iterators)在 C++ STL 中,對容器中數(shù)據(jù)的讀和寫,是通過迭代器完成的,扮演著容器和算法之間的膠合劑
函數(shù)對象(Functors)如果一個類將 () 運算符重載為成員函數(shù),這個類就稱為函數(shù)對象類,這個類的對象就是函數(shù)對象(又稱仿函數(shù))
適配器(Adapters)可以使一個類的接口(模板的參數(shù))適配成用戶指定的形式,從而讓原本不能在一起工作的兩個類工作在一起。值得一提的是,容器、迭代器和函數(shù)都有適配器。
內(nèi)存分配器(Allocators)為容器類模板提供自定義的內(nèi)存申請和釋放功能,由于往往只有高級用戶才有改變內(nèi)存分配策略的需求,因此內(nèi)存分配器對于一般用戶來說,并不常用。

另外,在惠普實驗室最初發(fā)行的版本中,STL 被組織成 48 個頭文件;但在 C++ 標準中,它們被重新組織為 13 個頭文件

<iteraotr> ?<functional> ?<vector> ?<deque>
<list> ?<queue> ?<stack> ?<set>
<map> ?<algorithm> ?<numeric> ?<memory>
<utility>

按照 C++ 標準庫的規(guī)定,所有標準頭文件都不再有擴展名。以 <vector> 為例,此為無擴展名的形式,而 <vector.h> 為有擴展名的形式。

但是,或許為了向下兼容,或許是為了內(nèi)部組織規(guī)劃,某些 STL 版本同時存儲具備擴展名和無擴展名的兩份文件(例如 Visual C++ 支持的 Dinkumware 版本同時具備 <vector> 和 <vector.h>);甚至有些 STL 版本同時具有 3 種形式的頭文件(例如 SGI 版本同時擁有 <vector>、<vector.h> 和 <stl_vector.h>);但也有個別的 STL 版本只存在包含擴展名的頭文件(例如 C++ Builder 的 Rauge Ware 版本只有 <vector.h>)。

建議讀者養(yǎng)成良好的習慣,遵照 C++ 規(guī)范,使用無擴展名的頭文件。


四、學習 STL 的 3 個境界

簡單總結(jié)一下,學習 STL 的 3 個境界分別為:能用、明理、能擴展。


五、STL 的缺陷

  1. STL 庫的更新太慢了。上一版靠譜的是 C++98,中間的 C++03 基本是一些修訂,C++11 出來已經(jīng)相隔 13 年了,STL 才進一步更新。

  2. STL 現(xiàn)在都沒有支持線程安全。并發(fā)環(huán)境下需要我們自己加鎖,且鎖的粒度是比較大的。

  3. STL 極度地追求效率,導致內(nèi)部比較復雜,比如類型萃取、迭代器萃取。

  4. STL 的使用會有代碼膨脹的問題,當然這是模板語法本身導致的。

http://www.risenshineclean.com/news/39944.html

相關(guān)文章:

  • 昆明網(wǎng)站建設(shè)哪家好網(wǎng)絡推廣入門教程
  • 怎樣在谷歌做網(wǎng)站站內(nèi)關(guān)鍵詞排名優(yōu)化軟件
  • vps做網(wǎng)站空間長春網(wǎng)絡優(yōu)化哪個公司在做
  • 網(wǎng)站開發(fā)的職業(yè)技術(shù)方面seo怎么做新手入門
  • 如何建設(shè)好政府門戶網(wǎng)站優(yōu)化網(wǎng)站性能
  • 成品網(wǎng)站管理系統(tǒng) 源碼拼多多網(wǎng)店代運營要多少費用
  • app網(wǎng)站制作要多少錢電腦優(yōu)化系統(tǒng)的軟件哪個好
  • wordpress加載慢 2017西安快速排名優(yōu)化
  • 網(wǎng)站發(fā)布信息技巧世界疫情最新數(shù)據(jù)
  • 阿里巴巴全球采購網(wǎng)優(yōu)化搜索點擊次數(shù)的方法
  • 福州做網(wǎng)站建設(shè)海外新聞發(fā)布
  • 古董做推廣哪個網(wǎng)站好微信營銷軟件排行榜
  • 網(wǎng)站是自己做還是讓別人仿愛鏈接網(wǎng)如何使用
  • 用java做網(wǎng)站要學什么谷歌獨立站推廣
  • 微信網(wǎng)站開發(fā)教程視頻貴陽網(wǎng)絡推廣排名
  • 隆昌市住房和城鄉(xiāng)建設(shè)廳網(wǎng)站可以引流推廣的app
  • 建設(shè)網(wǎng)站硬件千鋒教育地址
  • layui wordpressseo實戰(zhàn)密碼電子書
  • 注冊網(wǎng)站賬號違法嗎軟文廣告經(jīng)典案例300字
  • 做網(wǎng)站書面報告申請深圳谷歌推廣公司
  • 冀州網(wǎng)站建設(shè)價格2023網(wǎng)站推廣入口
  • 網(wǎng)站備案管理系統(tǒng)北京今日重大新聞
  • 優(yōu)化大師app下載汕頭seo建站
  • 合肥建設(shè)網(wǎng)絡賭博網(wǎng)站網(wǎng)站移動端優(yōu)化工具
  • 縉云建設(shè)局網(wǎng)站網(wǎng)絡營銷課程思政
  • 韋博在上面做課件的網(wǎng)站叫什么搜狗推廣登錄
  • 佛山倫教網(wǎng)站設(shè)計千鋒教育官網(wǎng)
  • app下載網(wǎng)站模板品牌推廣外包
  • 化妝品網(wǎng)站建設(shè)網(wǎng)站開發(fā)流程有哪幾個階段
  • 中國南昌企業(yè)網(wǎng)站制作seo修改器