link 1 STL 標準模板庫

2022-07-24 04:39:16 字數 1682 閱讀 3058

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,我們可

以構造出優雅⽽而且⾼高效的**,甚⾄至⽐比你⾃自⼰己⼿手⼯工實現的**效率還要⾼高很多。

關於pair

stl的頭⽂檔案中描述了了⼀乙個看上去⾮非常簡單的模版類pair,⽤用來表示⼀乙個⼆二元組或元

素對,並提供了了按照字典序對元素對進⾏行行⼤大⼩小⽐比較運算子模版函式。

2.1 使⽤用pair

定義⼀乙個pair物件表示⼀乙個平⾯面座標點:

pairp;

cin >> p.first >> p.second;

pair模版類需要兩個引數:⾸首元素的資料型別和尾元素的資料型別。pair模版類物件有兩個成

員:first和second,分別表示⾸首元素和尾元素。

在中已經定義了了pair上的六個⽐比較運算子:、<=、>=、==、!=,其規則是先⽐比

較first,first相等時再⽐比較second,這符合⼤大多數應⽤用的邏輯。當然,也可以通過過載這⼏幾個運算子

來重新指定⾃自⼰己的⽐比較邏輯。

除了了直接定義⼀乙個pair物件外,如果需要即時⽣生成⼀乙個pair物件,也可以調⽤用在中定

義的⼀乙個模版函式:make_pair。make_pair需要兩個引數,分別為元素對的⾸首元素和尾元素。

在ugly numbers的實現**中(1.1),就可以⽤用pair來表示推演樹上的結點,first表示結點

的值,⽤用second表示結點是由⽗父結點乘以哪⼀乙個因⼦子得到的。

看上去是⼀乙個很簡單的頭⽂檔案,但是的設計中卻濃縮反映了了stl設計的基本

思想。有意深⼊入了了解和研究stl的朋友,仔細閱讀和體會這個簡單的頭⽂檔案,不不失為⼀一種⼊入⻔門的途

徑。

pairp;

cin >> p.first >> p.second;

STL 標準模板庫)

此篇只是乙個目錄,將分成單篇去完成 stl 主要有三個部分組成 容器,迭代器,演算法。順序容器 向量 vector 雙端佇列 dequeue 表 list ps copy 方法 關聯容器 集合 set 多重集合 multiset 對映 map 多重對映 multimap 容器介面卡 棧 stack ...

Stl(標準模板庫)

stl 標準模板庫 stl的目的是標準化元件,這樣就不用重新開發,可以使用現成的元件。我們常用到的stl容器有vector list deque map multimap set和multiset。1.簡單概括 如果需要高效的隨機訪問,不在乎插入和刪除的效率,使用vector 類似陣列 2 如果需要...

STL標準模板庫

stl標準模板庫 一。概述 c 內建的標準模板庫stl可以分為以下6大類 1.容器 2.迭代器 3.空間分配器 4.介面卡 5.演算法 6.仿函式 1.容器 概念 用來管理一組元素 分類 序列式容器 sequence containers 每個元素都有固定位置 取決於插入時機和地點,和元素值無關。v...