c++stl中提供了強大的容器(containers)來替代程式中常用的資料結構,主要包括:字串(string), 動態陣列 (vector), 佇列(queue), 棧 (stack), 堆 (priority_queue), 鏈結表 (list), 集合 (set), 字典 (map)。
使用這些容器可以極大的簡化程式的編寫,提高程式設計的效率。也是我個人更喜歡c++(相對於c而言)的重要原因。廢話不多說,直接來看看各個容器中常用的操作。
name
vector
deque
string
queue
priority_queue
stack
list
setmap
empty()
判斷容器是否為空有有
有有有有
有有size()
返回容器的大小有有
有有有有
有有resize()
改變容器的大小有有
無無無有
無無operator
使用下標取值有有
無無無無
無有front()
訪問第乙個元素
有c++11有無
無有無無
back()
訪問最後乙個元素
有c++11有無
無有無無
push_back()
在容器末尾新增元素有有
無無無有
無無pop_back()
彈出容器末尾的元素
有c++11無無
無有無無
push_front()
無在容器首端新增元素無無
無無有無
無pop_front()
無彈出容器首端的元素無無
無無有無
無push()無無
無壓入元素有有
無無無pop()無無
無彈出元素有有
無無無insert()
插入元素有有
無無無有
有有erase()
刪除元素有有
無無無有
有有clear()
將容器清空有有
無無無有
有有begin()
返回容器首端的迭代器有有
無無無有
無有end()
返回容器尾端的迭代器有有
無無無有
無有rbegin()
反向首端反向迭代器有有
無無無有
無有rend()
反向尾端反向迭代器有有
無無無有
無有此外,priority_queue中的top()
函式——取出堆中的最大(或最小)值;stack的top()
函式——訪問下乙個元素(最近插入棧中的元素);set和map中的count()
函式——返回某個元素出現的次數,也比較常用。
在c++中,推薦使用vector來代替純陣列,使用string來表示字串,deque則多用於表示增加刪除特別頻繁的資料(尤其是在前面——非最後乙個增刪資料)。queue、priority_queue、stack、set、map則用於儲存特定型別的資料。
1 . 關於vector 2d陣列
#include
using
namespace
std;
int main()
2 . maxheap及minheap
#include
using
namespace
std;
int main()
3 . map與圖
如果說,2d vector在表示圖時可能會因為給出的vertex並不是連續而出現一些不便,那麼map的鍵值對則較為完美的解決了這一問題
// 乙個簡單示例
#include
#include
#include
using
namespace
std;
struct node
};int main(void)
c++reference: C STL中的容器
用c 寫資料結構習題也有一段時間了,不得不說stl容器對資料結構真的很有用。c stl standard template library,標準模板庫 是一套功能強大的 c 模板類,其中包含4個元件,分別為演算法 容器 函式 迭代器。所以想總結一下自己用的容器,為什麼要用它以及怎麼用?c c 原生的...
c STL中的容器
容器作為stl的重要組成部分,其主要包括兩大類 順序容器 和 關聯容器 雖說這二者都是用來儲存資料的資料結構,但是他們的底層實現和特長有很大差別 關聯容器有8種 1 map 紅黑樹 2 set 紅黑樹 3 multimap 紅黑樹 4 multiset 紅黑樹 5 unordered map 雜湊表...
C STL中的容器 Vector
c stl中的verctor好比是c語言中的陣列,但是vector又具有陣列沒有的一些高階功能。與陣列相比,vector就是乙個可以不用再初始化就必須制定大小的邊長陣列,當然了,它還有許多高階功能。要想用vector首先得包含標頭檔案vector。如果vector的元素型別是int,預設初始化為0 ...