九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項超值服

開通VIP
C++Qt中的lamda表達(dá)式使用說明及舉例

Lambda表達(dá)式是C++11中的一個新特性,它使得我們可以創(chuàng)建一個匿名函數(shù)對象,

這個對象可以作為參數(shù)傳遞給其他函數(shù)或者對象,也可以直接被調(diào)用。

Lambda表達(dá)式通常用來簡化代碼,特別是在使用STL算法時非常有用。

在Qt中,Lambda表達(dá)式也經(jīng)常被用來處理信號與槽,它可以替代傳統(tǒng)的信號槽連接方式,

使得代碼更加簡潔易懂。

下面是一些Lambda表達(dá)式的用法說明及舉例代碼:

1. 基本語法

Lambda表達(dá)式的基本語法如下:

```

[capture](parameters) -> return-type { body }

```

其中,`capture`是一個可選的捕獲列表,用于捕獲外部變量;

`parameters`是一個可選的參數(shù)列表;

`return-type`是返回值類型,也是一個可選項;`body`是Lambda表達(dá)式的函數(shù)體。

下面是一個簡單的Lambda表達(dá)式示例:

```

auto lambda = []() { cout << "Hello, world!" << endl; };

lambda();

```

這個Lambda表達(dá)式?jīng)]有捕獲任何外部變量,也沒有參數(shù),返回值為void,

函數(shù)體只是簡單地輸出一行文本。

2. 捕獲外部變量

Lambda表達(dá)式可以捕獲外部變量,以便在函數(shù)體中使用。捕獲方式有兩種:

值捕獲和引用捕獲。值捕獲會復(fù)制一份外部變量的值,而引用捕獲則會引用外部變量。

```

int x = 10;

auto lambda1 = [x]() { cout << "x = " << x << endl; };

auto lambda2 = [&x]() { cout << "x = " << x << endl; };

x = 20;

lambda1(); // 輸出 x = 10

lambda2(); // 輸出 x = 20

```

在上面的例子中,`lambda1`捕獲了變量`x`的值,因此在調(diào)用`lambda1`時,

輸出的是捕獲時的值10;`lambda2`捕獲了變量`x`的引用,

因此在調(diào)用`lambda2`時輸出的是當(dāng)前的值20。

3. 參數(shù)列表

Lambda表達(dá)式可以帶有參數(shù)列表,參數(shù)列表的語法與普通函數(shù)相同。

```

auto lambda = [](int x, int y) { return x + y; };

cout << lambda(1, 2) << endl; // 輸出 3

```

在上面的例子中,`lambda`帶有兩個參數(shù)`x`和`y`,返回它們的和。

4. 返回值類型

Lambda表達(dá)式可以指定返回值類型,也可以自動推斷返回值類型。

```

auto lambda1 = [](int x, int y) -> int { return x + y; };

auto lambda2 = [](int x, int y) { return x + y; };

cout << lambda1(1, 2) << endl; // 輸出 3

cout << lambda2(1, 2) << endl; // 輸出 3

```

在上面的例子中,`lambda1`顯式指定了返回值類型為int,

而`lambda2`則使用了自動類型推斷。

5. Lambda表達(dá)式作為函數(shù)參數(shù)

Lambda表達(dá)式可以作為函數(shù)參數(shù)傳遞。

```

std::vector<int> v = {1, 2, 3, 4, 5};

std::for_each(v.begin(), v.end(), [](int x) { cout << x << endl; });

```

在上面的例子中,`std::for_each`函數(shù)接受一個函數(shù)對象作為第三個參數(shù),

我們使用一個Lambda表達(dá)式來輸出v中的每個元素。

6. Lambda表達(dá)式作為信號槽

Lambda表達(dá)式可以替代傳統(tǒng)的信號槽連接方式,使得代碼更加簡潔易懂。

```

connect(button, &QPushButton::clicked, [=]() {

    QMessageBox::information(this, "Title", "Message");

});

```

在上面的例子中,我們使用Lambda表達(dá)式連接了QPushButton的clicked信號

和QMessageBox的information槽。

當(dāng)按鈕被點擊時,會彈出一個消息框。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
C 的 lambda 表達(dá)式,你總得知道一點兒
C 一般人看不懂的東西,C 11標(biāo)準(zhǔn)之Lambda表達(dá)式深度解析
30分鐘了解C++11新特性
C++Lambda表達(dá)式詳解
他來了,他來了,C 17新特性精華都在這了
C++11 lambda表達(dá)式
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服