吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C++ STL基本概念是什么

汽車電子技術 ? 來源:C語言Plus ? 作者:Maye426 ? 2023-02-27 15:56 ? 次閱讀

STL,英文全稱 standard template library,中文可譯為標準模板庫或者泛型庫,其包含有大量的模板類和模板函數,是 C++ 提供的一個基礎模板的集合,用于完成諸如輸入/輸出、數學計算等功能。

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

STL從廣義上講分為三類:algorithm(算法)、container(容器)和iterator(迭代器),容器和算法通過迭代器可以進行無縫地連接。幾乎所有的代碼都采 用了模板類和模板函數的方式,這相比于傳統的由函數和類組成的庫來說提供了更好的代碼重用機會。

STL細說六大件:

*– 容器(Container)*

		*– 算法(Algorithm)*

		*– 迭代器(Iterator)*

		*– 仿函數(Function object)*

		*– 適配器(Adaptor)*

		*– 空間配制器(allocator)*

在C++標準中,STL被組織為下面的13個頭文 件:、、、、、、、、、、、 和。

說了這么多,使用STL有什么好處呢?

1)STL是C++的一部分,因此不用額外安裝什么,它被內建在你的編譯器之內。

2)STL的一個重要特點是數據結構和算法的分離。盡管這是個簡單的概念,但是這種分離確實使得STL變得非常通用。

3) 程序員可以不用思考STL具體的實現過程,只要能夠熟練使用STL就OK了。這樣他們就可以把精力放在程序開發的別的方面。

4) STL具有高可重用性,高性能,高移植性,跨平臺的優點。

高可重用性:STL中幾乎所有的代碼都采用了模板類和模版函數的方式實現,這相比于傳統的由函數和類組成的庫來說提供了更好的代碼重用機會。關于模板的知識,已經給大家介紹了。

高性能:如map可以高效地從十萬條記錄里面查找出指定的記錄,因為map是采用紅黑樹的變體實現的。(紅黑樹是平橫二叉樹的一種)

高移植性:如在項目A上用STL編寫的模塊,可以直接移植到項目B上。

跨平臺:如用windows的Visual Studio編寫的代碼可以在Mac OS的XCode上直接編譯。

5) 了解到STL的這些好處,我們知道STL無疑是最值得C++程序員驕傲的一部分。每一個C++程序員都應該好好學習STL。只有能夠熟練使用STL的程序員,才是好的C++程序員。

6) 總之:招聘工作中,經常遇到C++程序員對STL不是非常了解。大多是有一個大致的印像,而對于在什么情況下應該使用哪個容器和算法都感到比較茫然。 STL是C++程序員的一項不可或缺的基本技能 ,掌握它對提升C++編程大有裨益。

圖片

Alexander Stepanov

容器

一些封裝數據結構的模板類,簡單來說,就是存儲數據的結構

序列式容器:特點是不會對存儲的元素進行排序,元素排列的順序取決于存儲它們的順序。

關聯式容器:在存儲元素時會為每個元素在配備一個鍵,整體以鍵值對的方式存儲到容器中,可以通過鍵值直接找到對應的元素,而無需遍歷整個容器。另外,關聯式容器在存儲元素,默認會根據各元素鍵值的大小做升序排序。

迭代器

用來遍歷容器中的元素的類型, 類中類 (可以理解為指針),扮演著容器和算法之間的膠合劑

算法

解決問題的方法

容器、迭代器、算法分離案例

#include
using namespace std;
//算法:求數組元素個數
int mcount(int* begin, int* end, int arr[])
{
  int num = 0;
  while (begin != end)
  {
    num++;
    begin++;
  }
  return num;
}
int main()
{
  //容器
  int arr[] = { 7,1,2,5,4,7,5 };
  //迭代器
  int* begin = arr;
  int* end = &arr[sizeof(arr) / sizeof(arr[0])];
  cout << mcount(begin, end, arr);


  while (1);
  return 0;
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 函數
    +關注

    關注

    3

    文章

    4346

    瀏覽量

    62968
  • C++
    C++
    +關注

    關注

    22

    文章

    2114

    瀏覽量

    73854
  • STL
    STL
    +關注

    關注

    0

    文章

    86

    瀏覽量

    18382
收藏 人收藏

    評論

    相關推薦

    C++STL算法(二)

    C++STL算法(二)
    的頭像 發表于 07-18 14:49 ?1126次閱讀
    <b class='flag-5'>C++</b>之<b class='flag-5'>STL</b>算法(二)

    c++STL算法(三)

    c++STL算法(三)
    的頭像 發表于 07-18 15:00 ?1379次閱讀
    <b class='flag-5'>c++</b>之<b class='flag-5'>STL</b>算法(三)

    C語言基本概念及語法

    C語言基本概念和語法供初學者研討
    發表于 08-18 10:32

    c++經典書籍

    。書中不但新增大量教學輔助內容,用于強調重要的知識點,提醒常見的錯誤,推薦優秀的編程實踐,給出使用提示,還包含大量來自實戰的示例和習題。   對C++基本概念和技術全面而且權威的闡述,對現代C++編程風格的強調,使本書成為
    發表于 10-24 21:06

    C語言基本概念

    C語言基本概念
    發表于 08-01 02:00

    C++ STL概念及舉例

      本篇文章是作者本人使用STL 后的一些看法, 對於想要靠此文章學習STL, 是不可能的. 建議叁后面介紹的一些書入門.   STL概念   在
    發表于 08-30 11:39 ?1421次閱讀

    STL算法在GIS中的應用

    使用STL 算法實現GIS 算法可以保證它的簡潔和高效該文結合C++代碼實例抽象出了地理算子的概念應用在GIS 算法當中通過定制適配器來消除地理算子和STL 算法之間的不匹配同時拓展了
    發表于 06-28 16:55 ?33次下載

    C++C/C++程序設計教程_C/C++概述

    C++基礎知識,簡要介紹了C++的一些簡單知識,概念,函數
    發表于 12-25 10:15 ?0次下載

    C++課程資料詳細資料合集包括了:面向對象程序設計與C++,算法,函數等

    ,循環,多態性,數組,模板,習題,STL編程,預處理,指針,結構體,位運算,文件,常見錯誤,c++模板使用疑問等
    發表于 07-09 08:00 ?18次下載
    <b class='flag-5'>C++</b>課程資料詳細資料合集包括了:面向對象程序設計與<b class='flag-5'>C++</b>,算法,函數等

    C++17 STL標準庫學習教材電子書免費下載

    C++標準模板庫(STL)。這本書中的例子展示了如何充分的利用STL。不過,作為本書的第1章,我們還是需要了解一下那些比較重要的新語言特性。
    發表于 02-28 08:00 ?8次下載
    <b class='flag-5'>C</b>++17 <b class='flag-5'>STL</b>標準庫學習教材電子書免費下載

    STL的概述

    C++ STL 是一套功能強大的 C++ 模板類,提供了通用的模板類和函數,這些模板類和函數可以實現多種流行和常用的算法,關于 STL 呢,下面通過一個系統框圖來對其進行一個總結
    的頭像 發表于 01-20 17:08 ?1456次閱讀
    <b class='flag-5'>STL</b>的概述

    C++STL庫中的容器

    前面跟大家介紹過STL庫,STL主要是由6大部分組成,其中第一個提到的就是容器,容器在介紹STL中小哥有簡單的跟大家介紹過,今天稍微再詳細介紹一下
    的頭像 發表于 02-21 10:55 ?1271次閱讀
    <b class='flag-5'>C++</b>之<b class='flag-5'>STL</b>庫中的容器

    線程池基本概念與原理

    一、線程池基本概念與原理 1.1 線程池概念及優勢 C++線程池簡介 線程池是一種并發編程技術,它能有效地管理并發的線程、減少資源占用和提高程序的性能。C++線程池通過庫,結合
    的頭像 發表于 11-10 10:24 ?577次閱讀

    STL內容介紹

    1 什么是STLSTL(Standard Template Library),即標準模板庫,是一個具有工業強度的,高效的C++程序庫。它被容納于C++標準程序庫(
    的頭像 發表于 11-13 11:32 ?932次閱讀
    <b class='flag-5'>STL</b>內容介紹

    C語言的基本概念和編程技術

    電子發燒友網站提供《C語言的基本概念和編程技術.pdf》資料免費下載
    發表于 11-20 10:18 ?0次下載
    <b class='flag-5'>C</b>語言的<b class='flag-5'>基本概念</b>和編程技術
    博彩网百家乐的玩法技巧和规则 | 神人百家乐官网赌场| 新澳博娱乐| 百家乐线路图分析| 百家乐出闲几率| 百家乐官网有试玩的吗| 百家乐官网对冲套红利| 网上百家乐官网投注法| 六合彩报码室| 姚记娱乐城网站| 贡山| 百家乐官网微心打法| 太阳城官网| 田东县| 喀喇| 深泽县| 百家乐官网开户送10彩金| 赌场百家乐官网试玩| 网上百家乐官网娱乐场| 百家乐官网体育nba| 百家乐官网蓝盾有赢钱的吗| 长沙百家乐官网的玩法技巧和规则| 王子百家乐官网的玩法技巧和规则 | 博客国际| 百家乐官网的关键技巧| 百家乐官网游戏作弊| 大上海百家乐官网的玩法技巧和规则 | 致胜百家乐下载| 百家乐百胜注码法| 百家乐街机| 大发888娱乐城真人视讯服务| 免费百家乐缩水工具| 日博bet365| 百家乐官网破解之法| 百家乐桌面| 大发888 3403| 百家乐官网游戏必赢法| 百家乐官网博彩公| 百家乐5式直缆打法| 免费百家乐缩水工具| 大世界娱乐|