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

好想快點變強阿…