C 中STL標準模板庫的常見容器

2021-10-09 20:25:09 字數 2989 閱讀 4024

stl是stand template library縮寫,也標準模板庫,由惠普實驗室提供。

分為以下內容:

容器:常用的一些資料結構,可以存放任何資料型別。

演算法:一些常用的演算法,如:查詢、排序、比較、交換,拷貝。

迭代器:幫助使用容器的工具,使用方式與指標類似。

1、迭代器

實現了*和->運算子的類物件,也支援++/–運算子,可以方便的遍歷、訪問、操作容器。

正向迭代器:容器型別《型別》::iterator it;

使用++運算子,相當於從頭尾遍歷容器。

容器的begin成員函式可以獲取正向迭代器的起始值。

容器的end成員函式可以獲取正向迭代器的末尾(最後一元素的後面)。

常正常迭代器:容器型別《型別》::const_iterator cit;

在正向迭代器的基礎上增加的const屬性,不能再通過迭代器去修改容器元素的值。

逆向迭代器:容器型別《型別》::reverse_iterator rit;

使用++運算子,相當於從尾到頭逆向遍歷容器。

常逆向迭代器:容器型別《型別》::const_reverse_iterator crit;

在逆向迭代器的基礎上增加的const屬性。

2、容器

vector

支援的運算子:==、!=、<=、>=、<、>、

建構函式:

vector()

;vector

( size_type num,

const type &val )

;vector

(const vector &from )

;vector

( input_iterator start, input_iterator end )

;

常用成員函式

void

push_back

(const type& val )

;//將val新增至vector容器末尾

void

assign

( input_iterator start, input_iterator end )

;//將區間[start, end)的元素賦到當前vector

void

assign

( size_type num,

const type &val )

;//賦num個值為val的元素到vector中

type at

( size_type loc )

;//相當於功能,at() 函式比 運算子更加安全, 因為它不會讓你去訪問到vector內越界的元素,越界時at會拋異常,而可能產生髒資料、段錯誤等。

iterator erase

( iterator loc )

;//刪除乙個元素,之前的迭代器已經補破壞,要重新接收它的返回值。

iterator erase

( iterator start, iterator end )

;//刪除一批元素

size_type size()

;//獲取當前元素的數量

stack、queue、deque、priority_queue用法與vector相似但無法使用迭代器。

deque叫雙端佇列,兩個埠都能進出。

priority_queue優先佇列,會根據元素的值自動進行排序,出佇列的順序就是排序後的順序,儲存自定義型別物件時需要實現 < 運算子。

set

集合容器,特點是元素不能重複,並且會自動排序,不支援運算子只有無參構造儲存自定義型別物件時需要自己過載實現 < 運算子

pair

equal_range

(const key_type& key )

;//返回集合中與給定值相等的上下限的兩個迭代器。

iterator lower_bound

(const key_type &key )

;//返回乙個指向大於或者等於key值的第乙個元素的迭代器。

iterator upper_bound

(const key_type &key )

;//在當前集合中返回乙個指向大於key值的元素的迭代器。

multiset

多重集合容器,與set的區別是元素可以重複。

map

叫對映容器,其它程式語言中也叫字典,它的元素由key/value的鍵值對組成。

pairinsert

( iterator pos,

const pair

&val )

;void

insert

( input_iterator start, input_iterator end )

;pairbool

>

insert

(const pair

&val )

;插入元素後會自動排序,key型別要支援《運算子。

iterator find

(const key_type &key )

;它的查詢效率非常高,底層採用紅黑樹進行儲存。multimap:

與對映的區別就中它的key可以重複,查詢時返回key相等的所有元素的迭代器。

bitset 它可以把乙個無符號長整型的整數轉換成二進位制,方便的進行位置運算。

C 容器(一)C 標準模板庫(STL)和容器

c 標準模板庫其實屬於c 標準庫的一部分,c 標準模板庫主要是定義了標準模板的定義與宣告,而這些模板主要都是類模板,我們可以呼叫這些模板來定義乙個具體的類 使用stl不需要自己手動建立乙個函式模板或者是類模板,這些模板都定義在標準模板庫中,我們只需要學會怎麼使用這些類模板來定義乙個具體的類,然後能夠...

C 標準模板庫STL

stl是標準c 庫的一部分。stl模板類為c 提供了完善的資料結構和演算法。stl的特點 型別引數化 即stl的 中可處理任意自定義型別的物件。泛型程式設計 generic programming 它以模板為基礎,弱化了 實體型別的差異,簡化了程式設計時問題抽象的模型,提供了更好的 封裝性和彈性。s...

C 標準模板庫STL

stl 標準模板庫 包括容器,演算法,迭代器 容器用來儲存資料,比如vector,list,堆疊等,string也算 一共有八個 演算法就是對容器進行操作,比如增刪改查資料 迭代器用來遍歷容器itreator 用指標的方式來遍歷容器的資料 注 平時使用的時候大部分時候我們都用上了,但是面試的時候不能...