容器之分類與各種測試(三) stack

2022-07-12 02:54:15 字數 1121 閱讀 6428

stack是棧,其實現也是使用了雙端佇列(只要不用雙端佇列的一端,僅用單端資料進出即完成單端佇列的功能),由於queue和stack的實現均是使用deque,沒有自己的資料結構和演算法,所以這倆也被稱為容器介面卡(container adapter)。

例程

#include#include#include#include#include#include#include#includeusing namespace std;

long get_a_target_long()

string get_a_target_string()

int comparelongs(const void* a, const void* b)

int comparestrings(const void *a, const void *b)

void test_stack(long& value)

catch(exception& p)

} cout << "milli-seconds : " << (clock()-timestart) << endl;

cout << "stack.size()= " << c.size() << endl;  //棧元素個數

cout << "stack.top()= " << c.top() << endl; //獲得棧頂元素

c.pop();                 //刪除棧頂

cout << "stack.size()= " << c.size() << endl;

cout << "stack.top()= " << c.top() << endl;

}int main()

執行結果

deque、queue、stack因為其功能的原因,所以它們在實現上沒有迭代器(iterator),也沒有查詢方法(find),這些方法會威脅到其功能性。(例如你可以獲得棧底的迭代器(指標),將其刪除,那麼棧類沒有移動操作,則其無法維護棧的合法性)

容器之分類與各種測試(三) queue

queue是單端佇列,但是在其實現上是使用的雙端佇列,所以在queue的實現上多用的是deque的方法。只要用雙端佇列的一端只出資料,另一端只進資料即可從功能上實現單端佇列 如下圖 例程 include include include include include include include ...

容器之分類與各種測試(四) multimap

multiset和multimap的具體區別在於,前者的key值就是自己儲存的value,後者的key與value是分開的不相關的。例程 include include include include include include include includeusing namespace st...

第二講 容器分類與各種測試

一 容器 分為序列容器 關聯容器 不定續容器 不定續容器 在資料存入容器中,位置不確定 序列容器 都有一定的次序,按照放進去的次序 array 用key來找value就非常快,所以比較適合查詢。vector deque 雙向 list 雙向鍊錶 forward list 單向鍊錶 關聯容器 set ...