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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C++ STL基本概念是什么

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

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

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

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

STL細(xì)說六大件:

*– 容器(Container)*

		*– 算法(Algorithm)*

		*– 迭代器(Iterator)*

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

		*– 適配器(Adaptor)*

		*– 空間配制器(allocator)*

在C++標(biāo)準(zhǔn)中,STL被組織為下面的13個(gè)頭文 件:、、、、、、、、、、、 和。

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

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

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

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

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

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

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

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

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

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

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

圖片

Alexander Stepanov

容器

一些封裝數(shù)據(jù)結(jié)構(gòu)的模板類,簡單來說,就是存儲(chǔ)數(shù)據(jù)的結(jié)構(gòu)

序列式容器:特點(diǎn)是不會(huì)對存儲(chǔ)的元素進(jìn)行排序,元素排列的順序取決于存儲(chǔ)它們的順序。

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

迭代器

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

算法

解決問題的方法

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

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

    關(guān)注

    3

    文章

    4277

    瀏覽量

    62323
  • C++
    C++
    +關(guān)注

    關(guān)注

    21

    文章

    2100

    瀏覽量

    73453
  • STL
    STL
    +關(guān)注

    關(guān)注

    0

    文章

    85

    瀏覽量

    18290
收藏 人收藏

    評論

    相關(guān)推薦

    C++STL算法(二)

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

    c++STL算法(三)

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

    C語言基本概念及語法

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

    c++經(jīng)典書籍

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

    C語言基本概念

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

    C++ STL概念及舉例

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

    STL算法在GIS中的應(yīng)用

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

    C++C/C++程序設(shè)計(jì)教程_C/C++概述

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

    C++課程資料詳細(xì)資料合集包括了:面向?qū)ο蟪绦蛟O(shè)計(jì)與C++,算法,函數(shù)等

    ,循環(huán),多態(tài)性,數(shù)組,模板,習(xí)題,STL編程,預(yù)處理,指針,結(jié)構(gòu)體,位運(yùn)算,文件,常見錯(cuò)誤,c++模板使用疑問等
    發(fā)表于 07-09 08:00 ?18次下載
    <b class='flag-5'>C++</b>課程資料詳細(xì)資料合集包括了:面向?qū)ο蟪绦蛟O(shè)計(jì)與<b class='flag-5'>C++</b>,算法,函數(shù)等

    C++17 STL標(biāo)準(zhǔn)庫學(xué)習(xí)教材電子書免費(fèi)下載

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

    STL的概述

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

    C++STL庫中的容器

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

    線程池基本概念與原理

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

    STL內(nèi)容介紹

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

    C語言的基本概念和編程技術(shù)

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