一峡捡、棧
#include<stack>
s.empty() 空則true,否則false
s.size() 返回棧中元素的個數(shù)
s.pop() 刪除棧頂元素但不返回值
s.top() 返回棧頂元素但不刪除元素
s.push() 在棧頂壓入新元素
二劣纲、隊列
#include<queue>
q.empty() 空則true,否則false
q.size() 返回隊列中元素的個數(shù)
q.pop() 刪除隊頭元素不返回值
q.front() 返回隊頭元素不刪除
q.push() 在隊尾壓入新元素
q.back() 返回隊尾元素的值不刪除
三逢捺、pair
3.1 pair的應(yīng)用
pair是將2個數(shù)據(jù)組合成一個數(shù)據(jù)寿烟,當(dāng)需要這樣的需求時就可以使用pair消略,如stl中的map就是將key和value放在一起來保存。另一個應(yīng)用是,當(dāng)一個函數(shù)需要返回2個數(shù)據(jù)的時候漠其,可以選擇pair哈街。 pair的實(shí)現(xiàn)是一個結(jié)構(gòu)體夺饲,主要的兩個成員變量是first second 因?yàn)槭鞘褂胹truct不是class装盯,所以可以直接使用pair的成員變量。
3.2 make_pair函數(shù)
template pair make_pair(T1 a, T2 b) { return pair(a, b); }
很明顯伺绽,我們可以使用pair的構(gòu)造函數(shù)也可以使用make_pair來生成我們需要的pair养泡。 一般make_pair都使用在需要pair做參數(shù)的位置,可以直接調(diào)用make_pair生成pair對象很方便奈应,代碼也很清晰瓤荔。 另一個使用的方面就是pair可以接受隱式的類型轉(zhuǎn)換,這樣可以獲得更高的靈活度钥组。靈活度也帶來了一些問題如:
std::pair(1, 1.1);
std::make_pair(1, 1.1);
是不同的输硝,第一個就是float,而第2個會自己匹配成double程梦。
類模板:template struct pair
參數(shù):T1是第一個值的數(shù)據(jù)類型点把,T2是第二個值的數(shù)據(jù)類型。
功能:pair將一對值組合成一個值屿附,這一對值可以具有不同的數(shù)據(jù)類型(T1和T2)郎逃,兩個值可以分別用pair的兩個公有函數(shù)first和second訪問。
3.3 用法
pair<int, int> p1; //使用默認(rèn)構(gòu)造函數(shù)
pair<int, int>p2(1,2.4); //給定值初始化
pair<int, int>p3(p2); //拷貝構(gòu)造函數(shù)
訪問元素:p1.first ? p1.second
4 定義宏
typedef ?pair<stirng, string> author;
author p1("Mary", "Lily");