RM新时代网站-首页

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

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

3天內不再提示

C++ STL基本概念是什么

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

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

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

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

STL細說六大件:

*– 容器(Container)*

		*– 算法(Algorithm)*

		*– 迭代器(Iterator)*

		*– 仿函數(shù)(Function object)*

		*– 適配器(Adaptor)*

		*– 空間配制器(allocator)*

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

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

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

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

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

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

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

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

高移植性:如在項目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

容器

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

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

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

迭代器

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

算法

解決問題的方法

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

#include
using namespace std;
//算法:求數(shù)組元素個數(shù)
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;
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 函數(shù)
    +關注

    關注

    3

    文章

    4327

    瀏覽量

    62569
  • C++
    C++
    +關注

    關注

    22

    文章

    2108

    瀏覽量

    73618
  • STL
    STL
    +關注

    關注

    0

    文章

    86

    瀏覽量

    18319
收藏 人收藏

    評論

    相關推薦

    C++STL算法(二)

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

    c++STL算法(三)

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

    C語言基本概念及語法

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

    c++經典書籍

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

    C語言基本概念

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

    C++ STL概念及舉例

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

    STL算法在GIS中的應用

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

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

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

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

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

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

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

    STL的概述

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

    C++STL庫中的容器

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

    線程池基本概念與原理

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

    STL內容介紹

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

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

    電子發(fā)燒友網站提供《C語言的基本概念和編程技術.pdf》資料免費下載
    發(fā)表于 11-20 10:18 ?0次下載
    <b class='flag-5'>C</b>語言的<b class='flag-5'>基本概念</b>和編程技術
    RM新时代网站-首页