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 用指標的方式來遍歷容器的資料 注 平時使用的時候大部分時候我們都用上了,但是面試的時候不能...