欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

目錄

柚子快報(bào)激活碼778899分享:C++初階——stack

柚子快報(bào)激活碼778899分享:C++初階——stack

http://yzkb.51969.com/

一、什么是stack

????????棧是一種容器適配器,專(zhuān)門(mén)設(shè)計(jì)用于在后進(jìn)先出(LIFO,Last In First Out)的上下文中操作,在這個(gè)上下文中,元素僅從容器的一端插入和提取。棧被實(shí)現(xiàn)為容器適配器,這些類(lèi)使用一個(gè)特定容器類(lèi)的封裝對(duì)象作為其底層容器,并提供一組特定的成員函數(shù)來(lái)訪問(wèn)其元素。元素從特定容器的“后端”被推入/彈出,這被稱(chēng)為棧的頂部。底層容器可以是任何標(biāo)準(zhǔn)容器類(lèi)模板或一些特別設(shè)計(jì)的容器類(lèi)。

二、stack的定義及初始化

2.1stack的定義

#include

#include

#include

using namespace std;

int main() {

stack<內(nèi)置類(lèi)型>s1; //定義一個(gè)儲(chǔ)存數(shù)據(jù)類(lèi)型為內(nèi)置類(lèi)型的stack容器s1

stack<自定義類(lèi)型>s2; //定義一個(gè)儲(chǔ)存數(shù)據(jù)類(lèi)型為自定義類(lèi)型的stack容器s2

stack s3[N]; //定義一個(gè)儲(chǔ)存數(shù)據(jù)類(lèi)型為int的stack容器數(shù)組,N為大小

}

2.2stack的初始化

#include

#include

#include

using namespace std;

int main() {

vector v = { 1,2,4 };

stack> s1(v);//用另一個(gè)容器進(jìn)行初始化,第二個(gè)參數(shù)為用來(lái)初始化的容器類(lèi)型

}

三、stack成員函數(shù)

3.1empty函數(shù)

bool empty() const;//函數(shù)原型

????????返回棧是否為空:即其大小是否為零。這個(gè)成員函數(shù)實(shí)際上調(diào)用了底層容器對(duì)象的empty成員函數(shù)。

#include

#include

#include

using namespace std;

int main() {

vector v = { 1,2,4 };

stack> s1(v);

stack s2;

cout << s1.empty() << endl;//s1不為空,所以返回值為0

cout << s2.empty() << endl;//s2是一個(gè)空棧,返回值是1

}

3.2size函數(shù)

size_type size() const;

????????返回棧中的元素?cái)?shù)量。這個(gè)成員函數(shù)實(shí)際上調(diào)用了底層容器對(duì)象的size成員函數(shù)。

#include

#include

#include

using namespace std;

int main() {

vector v = { 1,2,4 };

stack> s1(v);

stack s2;

cout << s1.size() << endl;

cout << s2.size() << endl;

}

3.3top函數(shù)

reference top();

const_reference top() const;

????????返回對(duì)棧頂元素的引用。由于棧是后進(jìn)先出(LIFO)容器,棧頂元素是最后插入到棧中的元素。這個(gè)成員函數(shù)實(shí)際上調(diào)用了底層容器對(duì)象的back成員函數(shù)。

#include

#include

#include

using namespace std;

int main() {

vector v = { 1,2,4 };

stack> s1(v);

cout << s1.top();

}

3.4push函數(shù)

void push (const value_type& val);

void push (value_type&& val);

????????在棧的頂部插入一個(gè)新元素,位于當(dāng)前頂部元素的上方。這個(gè)新元素的內(nèi)容被初始化為val一個(gè)副本。這個(gè)成員函數(shù)實(shí)際上調(diào)用了底層容器對(duì)象的push_back成員函數(shù)。

#include

#include

#include

using namespace std;

int main() {

vector v = { 1,2,4 };

stack> s1(v);

s1.push(10);

cout << s1.top() << endl;

cout << s1.size() << endl;

}

3.5pop函數(shù)

void pop();

????????移除棧頂元素 從棧中移除位于頂部的元素,有效地將其大小減少一。被移除的元素是最近插入到棧中的元素,其值可以通過(guò)調(diào)用成員函數(shù)top來(lái)檢索。這會(huì)調(diào)用被移除元素的析構(gòu)函數(shù)。這個(gè)成員函數(shù)實(shí)際上調(diào)用了底層容器對(duì)象的pop_back成員函數(shù)。

#include

#include

#include

using namespace std;

int main() {

vector v = { 1,2,4 };

stack> s1(v);

s1.push(10);

cout << s1.top() << endl;

cout << s1.size() << endl;

s1.pop();

cout << s1.top() << endl;

cout << s1.size() << endl;

}

3.6emplace函數(shù)?

template void emplace (Args&&... args);

????????在棧的頂部添加一個(gè)新元素,位于當(dāng)前頂部元素的上方。這個(gè)新元素是就地構(gòu)造的,而不是先構(gòu)造一個(gè)臨時(shí)對(duì)象然后再?gòu)?fù)制或移動(dòng)到容器中,將args作為其構(gòu)造函數(shù)的參數(shù)。這個(gè)成員函數(shù)實(shí)際上調(diào)用了底層容器的emplace_back成員函數(shù),并將args轉(zhuǎn)發(fā)給它。

? ? ? ? emplace不屬于匿名對(duì)象的用法。

#include

#include

#include

using namespace std;

class A

{

public:

int _a;

int _b;

A(int a = 0,int b = 0)

:_a(a),_b(b)

{}

};

int main() {

stack s1;

A a;

s1.push(a);

s1.emplace(10, 10);

cout << s1.top()._a << endl;

s1.pop();

cout << s1.top()._a << endl;

}

?3.7swap函數(shù)

void swap (stack& x) noexcept(/*see below*/);

????????這里的注釋/*see below*/指的是noexcept后面的表達(dá)式,它用于指定該函數(shù)是否可能拋出異常。在stack的swap函數(shù)中,這個(gè)表達(dá)式依賴于底層容器的swap函數(shù)是否可能拋出異常。

????????swap函數(shù)交換兩個(gè)stack對(duì)象的內(nèi)容。這是通過(guò)交換底層容器實(shí)現(xiàn)的,因?yàn)閟tack是一個(gè)容器適配器,它不直接存儲(chǔ)元素,而是依賴于一個(gè)底層容器。

#include

#include

#include

using namespace std;

int main() {

vector v1 = { 1,2,3 };

vector v2 = { 4,5,6 };

stack> s1(v1);

stack> s2(v2);

cout << s1.top() << endl;

cout << s2.top() << endl;

s1.swap(s2);

cout << s1.top() << endl;

cout << s2.top() << endl;

}

? ? ? ? 當(dāng)然,也可以通過(guò)標(biāo)準(zhǔn)庫(kù)里的模板swap函數(shù)進(jìn)行交換。

#include

#include

#include

#include

using namespace std;

int main() {

vector v1 = { 1,2,3 };

vector v2 = { 4,5,6 };

stack> s1(v1);

stack> s2(v2);

cout << s1.top() << endl;

cout << s2.top() << endl;

swap(s1, s2);

cout << s1.top() << endl;

cout << s2.top() << endl;

}

四、運(yùn)算符重載

bool operator==(const stack& lhs, const stack& rhs);

bool operator!=(const stack& lhs, const stack& rhs);

bool operator<(const stack& lhs, const stack& rhs);

bool operator>(const stack& lhs, const stack& rhs);

bool operator<=(const stack& lhs, const stack& rhs);

bool operator>=(const stack& lhs, const stack& rhs);

工作原理

相等性比較 (==):比較兩個(gè)棧是否包含完全相同的元素序列。 不等性比較 (!=):如果兩個(gè)棧不相等,則返回true。 小于比較 (<):使用字典序比較兩個(gè)棧的元素。 大于比較 (>):如果rhs小于lhs,則返回true。 小于等于比較 (<=):如果lhs小于或等于rhs,則返回true。 大于等于比較 (>=):如果lhs大于或等于rhs,則返回true。

????????這些運(yùn)算符的實(shí)現(xiàn)通常會(huì)委托給底層容器的相應(yīng)運(yùn)算符,這里的lhs和rhs分別是兩個(gè)對(duì)象的底層容器。這些比較運(yùn)算符會(huì)根據(jù)底層容器的元素順序和內(nèi)容進(jìn)行比較。

柚子快報(bào)激活碼778899分享:C++初階——stack

http://yzkb.51969.com/

好文推薦

評(píng)論可見(jiàn),查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://m.gantiao.com.cn/post/19762723.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問(wèn)

文章目錄