Qt Lambda表示式的使用

2021-10-07 03:47:34 字數 742 閱讀 9273

c++ 11中也新增了lambda表示式,在qt中使用該表示式也較為頻繁,今天在qt中使用該表示式時遇到了一些問題,在此做一下記錄。

qt中的lambda表示式是比較常用的一種方式,其結構如下:

[capture] (parameters) mutable ->return-type

[capture]:捕捉列表。捕捉列表總是出現在lambda函式的開始處。實際上,是lambda引出符。編譯器根據該引出符判斷接下來的**是否是lambda函式。捕捉列表能夠捕捉上下文中的變數以供lambda函式使用; [=]是經常使用的一種表達方式,其意思為將外部變數全部傳入lambda函式中。

(parameters):引數列表。與普通函式的引數列表一致。如果不需要引數傳遞,則可以連同括號「()」一起省略; 其通常與捕捉列表配合使用,為「=」。

mutable:mutable修飾符。在預設情況下,lambda函式總是乙個const函式,mutable可以取消其常量性。在使用該修飾符時,引數列表不可省略(即使引數為空);若不加mutable,則預設為const函式,可能會造成函式中諸如 「物件包含阻止匹配的型別限定符」這類錯誤。

->return-type:返回型別。用追蹤返回型別形式宣告函式的返回型別。我們可以在不需要返回值的時候也可以連同符號」->」一起省略。此外,在返回型別明確的情況下,也可以省略該部分,讓編譯器對返回型別進行推導。

:函式體。其實現與普通函式一樣,除了可以使用傳遞進來的引數之外,還可以使用所有捕獲的變數,若使用"[=]"則可以使用外部所有變數。

表示式 表示式樹 表示式求值

總時間限制 1000ms 記憶體限制 65535kb 描述 眾所周知,任何乙個表示式,都可以用一棵表示式樹來表示。例如,表示式a b c,可以表示為如下的表示式樹 a b c 現在,給你乙個中綴表示式,這個中綴表示式用變數來表示 不含數字 請你將這個中綴表示式用表示式二叉樹的形式輸出出來。輸入輸入分...

Mssql merge表示式的使用

基本語法格式 merge into target table 目標表 using source table 源表 on condition 匹配條件 when matched then sql語句 when not matched then sql語句 when not matched by sou...

java Lambda表示式的使用

如題,因為博主也是最近才接觸到lambda表示式的 ps 在這裡汗顏一會 我並不會講解它的原理,誠然任何一件事物如果理解原理的話,使用它必將更加容易。但博主在學習的時候,大多數時候都是學會怎麼用,然後在細究原理。就像你騎自行車之前,難道首先還要研究自行車的原理麼?首先lambda表示式的最簡單應用如...