STL常用容器及其常用函式總結(避免記混了SB)

2021-06-22 11:15:39 字數 3469 閱讀 7656

1、vector

初始化:vectorv;

vectorv(v1);//v1是乙個vector

vectorv(it1,it2);//it1,it2是兩個vector::iterator

vectorv(10,0);//初始化為10個0

vectorv(10);//初始化為10個隨機值

檢查容器是否為空:v.empty()

獲取容器中元素長度:v.size();

另附幾個不常使用:v.max_size()//容器中可容納最多元素個數   c.resize(n)//調整容器長度大小為n  c.resize(n,t)//同上所有元素設為t

新增元素:v.push_back(10);//在尾新增元素10

v.insert(it,10);//在迭代器it所指向元素前面插入元素10

v.insert(it,10,1);//在迭代器it所指向元素前面插入10個元素0

v.insert(it,it1,it2);//在迭代器it所指向元素前面插入迭代器[it1,it2)範圍內元素

訪問元素:v[10]  v.at(10)  c.back()  c.front  上述返回的都是引用,因此可以用於改變該位置的元素值

刪除元素:v.erase(it);//刪除迭代器it所指向元素

v.erase(it1,it2);//刪除迭代器[it1,it2)範圍內元素

v.clear();//刪除所有元素

c.pop_back;//刪除最後乙個元素

查詢某一元素:find(it1,it2,10);//查詢[it1,it2)範圍內是否存在元素值為10,存在則返回指向該元素迭代器

swap函式:v.swap(v1);//將容器v與v1中內容交換,速度快於將內容複製

assign函式:v.assign(it1,it2);//將v中元素替換為[it1,it2)範圍內元素,it1,it2不能指向v中元素,與swap相比需要將[it1,it2)內容複製到v中

v.assign(10,0);//將v中元素替換為10個0

2、list

初始化:同vector: listl;     listl(l1);  listl(it1,it2);   listl(10,0);  listl(10);

容器是否為空:l.empty();

容器大小:l.size();   l.max_size();  l.resize(10);  l.resize(10,0);

新增元素:l.push_back(10);//同

l.push_front(10);//在頭新增元素10

l.insert(it,10);//

l.insert(it,it1,it2);//

l.insert(it,10,0);//

訪問元素:l.back();    l.front();//無和at,性質決定

刪除元素:l.erase(it);

l.erase(it1,it2);

l.clear();//

l.pop_back();//

l.pop_front();//和deque有

查詢某一元素:find(it1,it2,0);//返回迭代器

swap函式及assign函式同上,使用

l.swap(l1);  l.assign(it1,it2);  l.assign(10,0);

3、stack(無迭代器)

初始化:stackstk;  stackstk(stk1); 

新增元素:stk.push(10);//入棧

刪除元素:stk.pop();//出棧

訪問元素:stk.top();//獲得棧頂元素

stk.empty();  stk.size();

stk.swap(stk1);

3、queue(無迭代器)

queueque;  queueque(que1);

que.push(10);//入隊  que.pop();//出對

que.front();//頭   que.back();//尾

que.empty();//判空  que.size();//長度

que.swap(que1);//

4、string

初始化:string s;  

string s(s1);

string s("123");

string s("1234",3);//前3個元素用於初始化

string s(s1,3);//s1的[0,3)作為s初始化

string s(s1,1,2);//s1的從位置1開始長度為2的內容用於初始化s

string s(sit1,sit2);//迭代器初始化

修改string物件方法:

insert,erase,assign

訪問某一位置元素:s[1];s.at[1];  返回引用

擷取子串:s.sustr(1,5);//位置1開始長度為5   s.substr(1);//返回位置1開始子串

replace函式:s.replace(1,5,args);  s.replace(it1,it2,args);

args可為多種型別引數,表示一段範圍字串內容即可:下標位置,迭代器等

查詢函式:s.find(args)   s.rfind(args);  

s.find_first_of(args);  s.find_last_of(args);

s.find_first_not_of(args);  s.find_last_not_of(args);

比較函式:compare

string的各個函式引數比較多樣化,主要是可以通過下標,迭代器,字串表示一段目標與之匹配

4、map

初始化:mapmp;

mapmp(mp1);

mapmp(it1,it2);

內部型別定義:map::key_type鍵值型別  

map::value_type是個pair型別

插入元素:mp.insert(make_pair(10,10));

mp.insert(it1,it2);

insert返回型別為pair::iterator,bool>若插入成功,則second為true;若該鍵值已存在則插入失敗,返回second為false

訪問元素:mp[10];//10是鍵值

count函式:mp.count(10);//返回鍵值為10的元素個數,因此只為0或1

find函式:mp.find(10);//返回鍵值為10的元素的迭代器

erase函式:mp.erase(10)//刪除鍵值為10的元素

mp.erase(it);//刪除迭代器it所指向元素

mp.erase(it1,it2);//刪除迭代器[it1,it2)範圍內資料

5、set

支援insert,count,find,erase等函式

STL常用容器總結

include 標頭檔案 queue q 定義 q.push x 入隊 q.pop 出隊 q.empty 判空 q.size 佇列元素個數 q.front 隊首元素值 q.back 隊尾元素值 include 標頭檔案 stack s 定義 s.push x 入棧 s.pop 出棧 s.empty ...

STL常用函式總結

先進後出,只有乙個出口,只能操作最頂端元素。定義stackstack name 例 stack int s 操作s.empty 返回bool型,表示棧內是否為空 s.size 返回棧內元素個數 s.pop 移除棧頂元素 s.push a 向棧中壓入a元素 s.top 返回棧頂元素 先進先出,從底端加...

STL容器的常用成員函式

一 vector deque 唯二支援隨機訪問的容器 1.插入 v.push back 5 v.insert it,5 在制指定位置插入 v.insert p,n,t 在p迭代器位置插入n個t v.insert p,b,e 在p迭代器位置插入b迭代器和e迭代器之間的元素 dq.push front ...