C 常用容器用法總結

2021-09-27 04:32:34 字數 3971 閱讀 4184

概念:容器是儲存其他物件的物件。被儲存的物件必須是同型別。

基本特徵:以下用x表示容器型別,t表示儲存的物件型別(如int);a和b表示為型別x的值;u表示為乙個x容器的識別符號(如果x表示vector,則u是乙個vector物件。)

表示式返回型別說明複雜度

x::iterator

指向t的迭代器型別

滿足正向迭代器要求的任何迭代器

編譯時間

x u建立乙個名為 u 的空容器

固定x ()

建立乙個匿名的空容器

固定x u(a)

建立乙個名為u,值為a的容器

線性a.begin()

迭代器返回指向容器第乙個元素的迭代器

固定a.end()

迭代器返回指向容器最後乙個元素+1的迭代器

固定a.size()

無符號整型

返回元素個數

固定a.swap()

void

交換a和b內容

固定a == b

可轉換為bool

如果a和b長度相當且每個元素都相等,則為真

線性a != b

可轉換為bool

返回 !(a == b)

線性常用容器:vector、list、deque、queue、stack

概念:序列是對基本容器的一種改進,在保持其基礎功能上增加一些我們需要的更為方便的功能。

要求:序列的元素必須是嚴格的線性順序排序。因此序列中的元素具有確定的順序,可以執行將值插入到特定位置、刪除特定區間等操作。

序列容器基本特徵:以下用 t 表示型別為t(儲存在容器中的值的型別)的值,n表示整數,p、q、i和j表示迭代器。

表示式返回型別說明

x a(n,t)

宣告乙個名為a的由n個t值組成的序列

x(n,t)

建立乙個由n個t值組成的匿名序列

x a(i,j)

宣告乙個名為a的序列,並將其初始化為區間[i,j)的內容

x (i,j)

建立乙個匿名序列,並將其初始化為區間[i,j)的內容

a.insert(p,t)

迭代器將t插入到p的前面

a.insert(p,n,t)

void

將n個t插入到p的前面

a.insert(p,i,j)

void

將區間[i,j)的元素插入到p前面

a.erase(p)

迭代器刪除p所指向的元素

a.erase(p,q)

迭代器刪除區間[p,q)中的元素

a.clear()

void

清空容器

不同容器特有的特徵:

表示式支援的容器

a.front()

vector、list、deque

a.back()

vector、list、deque

a.push_front(t)

list、deque

a.push_back(t)

vector、list、deque

a.pop_front(t)

list、deque

a.pop_back(t)

vector、list、deque

a[n]

vector、deque

a.at(t)

vector、deque

注:a[n]和a.at(n)都返回乙個指向容器中第n個元素的引用。區別在於:如果n落在容器有效區間之外,a.at(n)將執行邊界檢查,並引發out_of_range異常。

之所以vector沒有push_front(),是因為vector執行此表示式複雜度為線性時間,而deque為固定時間。(這與它們的特性有關。)

函式說明

void merge(list& x)

將鍊錶x與呼叫鍊錶合併,倆個鍊錶必須已排序。合併後的經過排序的鍊錶儲存在呼叫鍊錶中,x為空。線性時間。

void remove(const t & val)

從鍊錶中刪除val的所有例項。線性時間。

void sort()

使用《運算子對鍊錶進行排序,複雜度nlogn

void splice(iterator pos,listx)

將鍊錶x的類容插入到pos前面,x將為空。固定時間。

void unique()

將連續相同的元素壓縮為單個元素。線性時間。

#include#include#include#includeusing namespace std;

void outint(int n)

void show(listdice,int flag)//此函式用來輸出容器元素

int main()

; dice.insert(dice.begin(),a,a+4);//insert函式用法

show(dice,1);

listtwo(dice);//另一種賦初值方法,其值與dice相等

show(two,0);

dice.splice(dice.begin(),two);//splice函式用法

show(dice,1);

show(two,0); //two清空

two = dice;

dice.unique();//unique壓縮連續相同的元素

show(dice,1);

dice.sort();//sort函式用法

two.sort();

show(dice,1);

show(two,0);

dice.merge(two);//merge函式用法,將two合併到dice中,two將為空。

show(dice,1);

show(two,0);

dice.remove(2);//移除所有2

show(dice,1);

return 0;

}

方法說明

bool empty()const

如果隊列為空,則返回true,否則返回false

size_type size()const

返回佇列中元素的數目

t& front() 

返回指向隊首元素的引用

t& back()

返回指向隊尾元素的引用

void push(const t& x) 

在隊尾插入x

void pop() 

刪除隊首元素

注:pop()是乙個刪除資料的方法,不是檢索資料的方法。如果要使用佇列中的值,首先要使用front()來檢索這個值,然後用pop()將他從佇列中刪除。

方 法說 明

bool empty()const

如果棧為空,返回true,否則返回false

size_type size()const

返回棧中元素數目

t& top()

返回指向棧頂元素的引用

void push(const t& x)

在棧頂插入x

void pop()

刪除棧頂元素

注:與queue類似,如果要使用棧中的值,必須首先使用top()來檢索這個值,然後使用pop()將它從棧頂刪除。

STL C C STL常用容器用法總結

c c stl常用容器用法總結 一 容器 概念 容器是儲存其他物件的物件。被儲存的物件必須是同一型別。基本特徵 以下用x表示容器型別 後面會講到 t表示儲存的物件型別 如int a和b表示為型別x的值 u表示為乙個x容器的識別符號 如果x表示vector,則u是乙個vector物件。表 達 式 返 ...

順序容器用法總結

vector 可變大小陣列 支援快速隨機訪問。在尾部之外的位置插入或刪除元素可能很慢 deque 雙端佇列 支援快速隨機訪問。在頭尾位置插入 刪除速度很快 list 雙向鍊錶 只支援雙向順序訪問。在list中任何位置進行插入 刪除操作速度都很快 forward list 單向鍊錶 只支援單向順序訪問...

C 容器用法整理

操作刪 mapstd vector 變數型別 變數名 不定長 std vector 變數型別 變數名 數量 定義一定數量長度的vector std vector 變數型別 變數名 數量,初始值 定義一定數量長度,並且每個都為初始值的vector std vector 變數型別 變數名 另乙個相同型別...