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