vector可以理解為「變長陣列」,也即「長度根據需要而自動改變的陣列」。
1.vector的定義
vectorname和一維陣列一樣,這裡的typename可以是任何基本型別
注意:如果typename也是乙個stl容器,定義的時候要記得在》符號之間加上空格 如:(a)vectorname這裡很容易聯想到二維陣列的定義,即其中一維是乙個陣列的陣列。那麼vector陣列也是一樣,即arrayname中的每乙個元素都是乙個vector
(b)定義vector陣列的方法:vectorarrayname[arraysize]這種寫法與上一種不同的 是,這種寫法的一維長度已經固定為arraysize,另一維才是變長。
2.vector容器內元素的訪問
(1)通過下標訪問
這種方式與陣列的下標訪問方式一樣,不再贅述。
(2)通過迭代器訪問
迭代器(iterator)可以理解為一種類似指標的東西,使用方式如下:
vector::iterator it;
這樣就得到了迭代器it,並且可以通過*it來訪問vector裡的元素。
#include#includeusing namespace std;
int main( )
需要注意的是,在常用的stl容器中,只有在vector和string中,才允許使用vi.begin()+3這種迭代器加上整數的寫法。
3.常用函式
(1)push_back
這個函式就是在vector後邊新增乙個元素x。
(2)pop_back()
這個函式就是刪除vector的尾元素。
(3)size()
這個函式用來獲得vector中元素的個數。
(4)clear()
用來清空vector中所有元素。
(5)insert
insert(it,x)用來像任意的迭代器it處插入乙個元素x。
如:vi.insert(vi.begin()+2,-1);//將-1插入vi[2]的位置。
(6)erase()
erase()有兩種用法:刪除單個元素,刪除乙個區間內的所有元素。
vi.erase(vi.begin()+3);//刪除vi[3]
vi.erase(vi.begin()+1,vi.begin()+4);//刪除vi[1],vi[2],vi[3]
set就是集合,是乙個內部自動有序且不含重複元素的容器
1.set容器內元素的訪問
set只能通過迭代器訪問
由於除開vector和string之外的stl容器都不支援(it+i)的訪問方式,因此只能按如下方式列舉*:
#include#includeusing namespace std;
int main( )
執行結果不難發現,set內的元素自動遞增排序,且自動去除了重複元素。
2.set常用函式
(1)insert()
insert(x)可將x插入set容器中,並且自動遞增排序和去重。
(2)find()
find(value)返回set中對應值為value的迭代器
(3)erase() size() clear()同上
即用來儲存字串
用法都和上邊的類似,不再贅述
下面介紹相關的函式例項
1.operator+=
這是string 的加法,可以將兩個string直接拼接起來
#include#includeusing namespace std;
int main( )
{ string str1="abc",str2="xyz",str3;
str3=str1+str2;
str1+=str2;
cout<2.compare operator
兩個string直接用==,!=,<,>等比較,比較規則是字典序
3.length(),size()
返回string的長度
4.insert()
在string中insert()的用法有很多
(1)insert(pos,string),在pos號位置插入字串string
(2)insert(it,it2,it3)
it為原字串的欲插入位置,it2,it3為待插入字串的首位迭代器,用來表示串[it2,it3)將被插入在it的位置上。
(3)substr()
substr(pos,len)返回從pos號位開始,長度為len的子串
(4)replace()
str.replace(pos,len,str2)把str從pos號位開始,長度為len的字串替換為str2。
str.replace(it1,it2,str2)把str的迭代器[it1,it2)範圍內的字串替換為str2。
map即理解為對映,比如在定義陣列時,如int aeeay[100]其實時定義了乙個從int 到int 的對映,所以我們就可以用map建立任何基本型別對映到任何基本型別。
ps:以上摘自《演算法筆記》
C 標準模板庫STL
stl是標準c 庫的一部分。stl模板類為c 提供了完善的資料結構和演算法。stl的特點 型別引數化 即stl的 中可處理任意自定義型別的物件。泛型程式設計 generic programming 它以模板為基礎,弱化了 實體型別的差異,簡化了程式設計時問題抽象的模型,提供了更好的 封裝性和彈性。s...
C 標準模板庫STL
stl 標準模板庫 包括容器,演算法,迭代器 容器用來儲存資料,比如vector,list,堆疊等,string也算 一共有八個 演算法就是對容器進行操作,比如增刪改查資料 迭代器用來遍歷容器itreator 用指標的方式來遍歷容器的資料 注 平時使用的時候大部分時候我們都用上了,但是面試的時候不能...
c (標準模板庫STL)
stl是一種泛型程式設計 generic programming 容器主要有以下分類 例如 容器的成員函式begin 返回指向容器中第乙個元素的迭代器 end 返回指向容器中最後乙個元素後繼位置的迭代器。下面通過stl中提供的乙個泛型函式find 來說明迭代器與泛型演算法的關係 首先看下stl對於f...