#16896: 我 94 不喜翻 switch-case 喇(使用 Lambda 陣列)


nevikw39 (牜攵)

學校 : 國立臺中第一高級中學
編號 : 89903
來源 : [140.114.207.96]
最後登入時間 :
2023-05-16 17:02:16
a244. 新手訓練 ~ for + if -- 新手訓練系列 ~ 1 | From: [106.107.240.213] | 發表日期 : 2019-02-16 22:11

大家安安 o'_'o

乳提,我 94 不喜翻 if-else 和 switch-case 喇,所以凡是能用三元運算子我必不用 if,switch 大部分以陣列及迴圈化解。

然而,題目所求是四則運算,要怎麼放進陣列?總不會全部算一遍丟進去吧 XD

不曉得尼有迷有聽過「函式指標」?我們可以定義四個函式對應四則運算。但是如此一來,程式碼便ㄉ很長,也違背初衷。

所以,讓我們使用現代 C++ 帶來 der 強大利器——「Lambda 運算式」八!

#include <functional> // 單純使用 lambda 不須引入此 header,惟我們須使用 lambda 陣列而 auto 不能 declare array

using std::function;

...

    long a, b, o;

    function<long()> funcs[] = {[&] { return a + b; }, [&] { return a - b; }, [&] { return a * b; }, [&] { return a / b; }}; // 以 reference 抓取喔

    //  接下來只要讀入 o, a, b 並呼價對應之 lambda 即可(注意兩數在後面)

     cout << funcs[o - 1]() << endl;

大 guy 4 john

謝謝大家

 
ZeroJudge Forum