C++ STL中的push() 小技巧
STL 好方便 R
C++ 中的 STL(Standard Template Library) 真D非常方便RRRRRRRRRRRRRRRRR
相信寫過一段時間 C++ 的朋友應該對於這東西不陌生
啥都幫你刻好 只要敲幾個英文 include 就可以用到爽…
以下正文
舉些平常會一直使用到的東西當例子
比如說 stack, queue 這兩個超基礎 但是卻被大家用到爆的資料結構
其中都有包含 push()
這個 function
我們知道宣告可以用這樣的語法 stack<T>
來宣告
而其中的的 T
也可以使用像是 struct, class 這類的東西當底
不過這時候就很尷尬了
因為 push()
裡面要怎麼塞勒QQ
有兩種方法分別用於有 constructor 與沒有 constructor 兩種情況
無 Constructor :
1
2
3
4
5
6
7
8
9
10
11
12
13
14struct QQ
{
int a, b;
};
int main()
{
stack<QQ> qq;
// 直接用個大括號包起你要的變數
qq.push( {10, 20} );
return 0;
}有 Constructor :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17struct QQ
{
int a, b;
QQ(){};
QQ(int num, int num2): a(num), b(num2) {};
};
int main()
{
stack<QQ> qq;
// 使用呼叫Constructor的方式
qq.push( QQ(10, 20) );
return 0;
}
END
今天教學就到這了XD
是說 當時第一次在課堂上看到這東西真的覺得有夠炫炮
不過隨著稍微對演算法有點點感覺後發現
這方法或許在以後 C++ 的使用上會變成很重要的一個技巧
因為 stack 與 queue 不可能每次都如願的只塞 int
, char
之類的基本 Type
隨著東西變得複雜會對於 “自訂一包東西” 變得相對重要
而如何將自訂的東西與 STL 完美融合這就需要經驗了~
好想快點變強阿…