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
14
struct 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
17
struct 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++的使用上會變成很重要的一個技巧
因為stackqueue不可能每次都如願的只塞int, char之類的基本Type
隨著東西變得複雜會對於”自訂一包東西”變得相對重要
而如何將自訂的東西與STL完美融合這就需要經驗了~

好想快點變強阿…