C STL 入門 STL簡介

2021-10-04 06:56:21 字數 1508 閱讀 9229

stl(standard template library,標準模板庫)是 c++語言標準中的重要組成部分。 stl 以模板類和模板函式的形式為程式設計師提供了各種資料結構和演算法的精巧實現,程式設計師如果能夠充分地利用 stl,可以在**空間、執行時間和編碼效率上獲得極大的好處。

stl 大致可以分為三大類:演算法(algorithm)、容器(container)、迭代器(iterator)。

stl 容器是一些模板類, 提供了多種組織資料的常用方法, 例如vector(向量,類似於陣列)、list(列表,類似於鍊錶)、deque(雙向佇列)、set(集合)、map(映象)、stack(棧)、queue(佇列)、priority_queue(優先佇列)等,通過模板的引數我們可以指定容器中的元素型別。

stl 演算法是一些模板函式,提供了相當多的有用演算法和操作,從簡單如for_each(遍歷)到複雜如stable_sort(穩定排序)。

stl 迭代器是對 c 中的指標的一般化,用來將演算法和容器聯絡起來。幾乎所有的 stl 演算法都是通過迭代器來訪問元素序列進行工作的,而 stl 中的每乙個容器也都定義了其本身所專有的迭代器,用以訪問容器中的元素。有趣的是,普通的指標也可以像迭代器一樣工作。

熟悉了 stl 後,你會發現,很多功能只需要用短短的幾行就可以實現了。通過stl,我們可以構造出優雅而且高效的**,甚至比你自己手工實現的**效果還要好。stl 的另外乙個特點是,它是以原始碼方式免費提供的,程式設計師不僅可以自由地使用這些**,也可以學習其原始碼,甚至按照自己的需要去修改它。

在 c++標準中, stl 被組織為以下的一組標頭檔案(注意,是沒有.h 字尾的!):algorithm/deque/functional/iterator/list/map

memory/numeric/queue/set/stack/utility/vector

當我們需要使用 stl 的某個功能時,需要嵌入相應的標頭檔案。但要注意的是,在 c++標準中, stl 是被定義在 std 命名空間中的。如下例所示:

#include

using namespace std;

intmain()

stl 是 c++語言機制運用的乙個典範,通過學習 stl 可以更深刻地理解 c++語言的思想和方法。在本系列的文章中不打算對 stl 做深入的剖析,而只是想介紹一些 stl 的基本應用。有興趣的同學,建議可以在有了一些 stl 的使用經驗後,認真閱讀一下《 c++stl》這本書(電力出版社有該書的中文版)。

C STL 用法簡介

感覺類似python的字典 需要 include 定義是map m 如 map mapstudent int 是 key,string是value 是乙個對映關係,可以使用key通過下標訪問,訪問其中的元素。定義了三種型別,插入鍵值對的插入規則 第一種就是直接通過下標插入 mapstudent ke...

C STL使用入門

stl standard template library,標準模板庫 我最開始接觸c 程式設計是從dos下的borland c 開始的。那時他們在最新版本3.1中就包含了一套模板庫用來做collection.那真是個好東東。當我開始使用visual c 2.2的時候,我甚至試圖去把borland公...

c stl應用入門

在這篇中,我會講幾個簡單易懂且比較常用的stl函式,這些函式在noip系列考試中往往被允許使用 既然讓用我們自然不用手碼了.末尾有驚喜!絕大部分剛入門的oier第乙個接觸的stl函式就是sort函式,這是乙個簡單而又快速的排序函式 通過內部整合的快速排序的 可以在o nlogn 的時間內完成乙個長度...