C STL中的容器簡介

2021-08-08 11:49:32 字數 2117 閱讀 6143

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 ...