C 標準模板庫(STL)

2021-09-24 23:41:54 字數 2995 閱讀 3565

c++ 原先的標準模板庫容器包括:

deque, list, queue, priority_queuem stack, vector, map, multimap, set, multiset, bitset

c++11將bitset從容器分類移去了單獨分類,並且新增了:

unordered_map, unordered_multimap, unordered_set, unordered_multiset

標準模板庫特性:

表示式返回值

描述x::iterator

iterator

滿足前向迭代器要求的任何迭代器類別

x::value_type

tt型別

x u;

建立乙個空的容器u

x();

建立乙個空的無名容器

x u(a);

複製建構函式傳遞條件:u==a

x u==a

同上r=a

x&複製賦值傳遞條件:r==a

a.begin()

a.end()

返回結尾後乙個迭代器

a.size

返回a.end()-a,begin()

a.swap(b)

void

互換a和b

a==b

bool

a!=b

bool

return !(a==b)

c++11裡將複製建構函式的操作改為了移動

並且新增了a.cbegin()和a.cend()兩個函式,返回常量迭代器

對於序列:dequeue,list,priority_queue,stack,vector,支援以下特性:

注意:p,q,i,j是迭代器,n是整型

表示式返回值

描述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)

iterator

在p前插入t的拷貝

a.insert(p,n,t)

void

在p前插入n個t的拷貝

a.insert(p,i,j)

void

在p前插入[i,j)元素的拷貝

a.erase( p )

iterator

移除p元素

a.erase(p,q)

iterator

移除[p,q)元素

a.clear()

void

erase(begin(),end())

另外有表示式

返回值描述

容器a.front()

t&vector,list,deque

a.back()

t&vector,list,deque

a.push_front(t)

void

在頭部插入t

list,deque

a.push_back(t)

void

在尾部插入t

vector,list,deque

a.pop_front(t)

void

擦除頭部的值

list,deque

a.pop_back()

void

擦除尾部的值

vector,list,deque

a[n]

t&*(a.begin()+n)

vector,deque

a. at(n)

t&同a[n],但a. at(n)會做越界檢查

vector,deque

vector:代表向量array

有兩個類函式:rbegin(),rend(),返回反向的第乙個迭代器和反向的最後乙個迭代器之後的值

deque:代表雙向佇列

list:雙向鍊錶

雙向鍊錶的成員函式:

表示式描述

void merge(list& x)

將列表x與呼叫列表合併。兩個列表都必須排序,合併後x清空,o(n)

void remove(const t & val)

從列表中刪除val的所有例項,o(n)

void sort()

以《操作符進行排序,o(nlogn)

void splice(iterator pos, listx)

將鍊錶x插入到pos之前,x清空,o(1)

void unique()

移除連續的相等元素

queue

表示式描述bool empty() const

判斷佇列是否為空

size_type size() const

返回佇列中的元素數

t& front()

返回佇列頭部元素的引用

t& back()

返回佇列尾部元素的引用

void push(const t& x)

在佇列尾部插入x

void pop()

移除佇列頭部的元素

priority_queue:支援與queue同樣的操作,最大值會被移到佇列頭部,潛在的預設類是vector

stack

表示式描述bool empty() const

判斷棧是否為空

size_type size() const

返回棧中的元素數

t& top()

返回棧頂部元素的引用

void push(const t& x)

在棧頂部插入x

void pop()

移除棧頂部的元素

array:定義在array標頭檔案裡,有固定的size,沒有push_back和insert操作

四個聯合容器

setmultiset

map

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