STL之stack(棧)詳解

2021-10-23 20:38:12 字數 2048 閱讀 1976

這種資料結構使用lifo技術,其中lifo表示後進先出。首先插入的元素將在末尾提取,以此類推。有乙個名為「top」的元素,它是位於最上面位置的元素。所有插入和刪除操作都是在堆疊的頂部元素本身進行的。

語法:

template

<

classt,

class

container

= deque

>

class

stack

;

模板引數

t:引數指定容器介面卡將保留的元素的型別。

container:引數指定容器的內部物件,用於容納堆疊的元素。

成員型別

value_type:指定了元素型別。

container_type:指定了基礎容器型別。

size_type:它指定元素的大小範圍。

該函式用於在堆疊頂部插入新元素。

void push (const value_type& value)

stack<

int> a;

//a為空

a.push(1

);//a中元素:1

該函式用於刪除元素,堆疊中的元素從頂部刪除。

void pop()

stack<

int> a;

//a為空

a.push(1

);//a中元素:1

a.push(2

);//a中元素:2,1

a.pop()

;//a中元素:1

該函式用於訪問堆疊的頂部元素。該元素起著非常重要的作用,因為所有插入和刪除操作都是在頂部元素上執行的。

value_type& top();

const value_type& top() const;

stack<

int> a;

//a為空

a.push(1

);//a中元素:1

a.push(2

);//a中元素:2,1

int b = a.

top();

//b為2,a中元素不改變

該函式返回堆疊容器的大小,該大小是堆疊中儲存的元素數量的度量。

size_type size() const

stack<

int> a;

//a為空

a.push(1

);//a中元素:1

a.push(2

);//a中元素:2,1

int b = a.

size()

;//b為2

該函式用於測試堆疊是否為空。如果堆疊為空,則該函式返回true,否則返回false。

bool empty() const;

stack<

int> a;

//a為空

bool b = a.

empty()

;//返回true

a.push(1

);//a中元素:1

b = a.

empty()

;//返回false

該函式用於在當前頂部元素上方的堆疊中插入新元素。。

template void emplace (args&&… args);

args:引數**用於構造新元素的引數。也就是說,由args指定的元素將插入到當前頂部元素上方的堆疊中。現在,新插入的元素成為頂部元素,並且所有推入和彈出操作都在其上執行。

與push的區別:

push的元素必須是已經構造好的物件,而emplace可以直接傳入構造物件需要的元素,然後自己呼叫其建構函式!

stack<

int> a;

//a為空

a.emplace(1

);//a中元素:1

STL容器之stack棧

棧 statck 這種資料結構在計算機中是相當出名的。棧中的資料是先進後出的 first in last out,filo 棧只有乙個出口,允許新增元素 只能在棧頂上增加 移出元素 只能移出棧頂元素 取得棧頂元素等操作。在stl中,棧是以別的容器作為底部結構,再將介面改變,使之符合棧的特性就可以了。...

C 基礎 STL之棧stack

這篇文章介紹一下stl中stack的基本使用方法。棧也是最為常見的一種資料結構,佇列中的元素滿足filo 先進後出 include using namespace std stack函式名 用途功能說明 時間複雜度 size 查詢遍歷 獲取元素個數 o 1 top 查詢遍歷 獲取指向第乙個元素的迭代...

C 中STL容器之棧 stack

1.棧 stack 基本介紹 棧是限定在僅在表尾進行插入或刪除操作的線性表,表尾端稱為棧頂 top 表頭端稱為 棧底 bottom 一般的棧如下圖所示,它的特點可用圖3.1 b 所示的鐵路排程站形象地表示 2.棧的基本用法 2.1 棧的定義方式 stacks 引數也是資料型別,這是棧的定義方式 st...