日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++11新特性_c++11新特性(四)

發布時間:2024/9/3 c/c++ 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++11新特性_c++11新特性(四) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

4、lambda、bind、function

4.1、直接lambda表達式

lamda表達式不僅僅是一個語法新特性,對于沒有用過java或C#lamda表達式讀者,C++11的lamda表達式在一定程度上還沖擊著你對傳統C++編程的思維和想法。

int main(){? ? auto add= [](int a, int b)->int{? ? ? ? return a + b;? ? };? ? int ret = add(1,2);? ? std::cout << "ret:" << ret << std::endl;? ? return 0;}

解釋:

第3至5行為lamda表達式的定義部分

[]:中括號用于控制main函數與內lamda表達式之前的變量在lamda表達式中的訪問形式;

(int a,int b):為函數的形參

->int:lamda表達式函數的返回值定義

{}:大括號內為lamda表達式的函數體。

4.2、c++11風格的函數指針std::function & std::bind

int func1 (int a, int b) { return a + b; }auto a = 1, b = 2;std::function modify_add0(func1);LOG(INFO) << "directly assign function: " << modify_add0(a, b);

通過指定返回值、參數列表、綁定的函數和函數名,定義一個函數(指針)modify_add0

綁定的函數,可以是普通函數,也可以是類成員函數,同時指定:

class ca {public:bool func(int a) {LOG(INFO) << "aaa: " << a;}};ca o;std::function f = std::bind(&ca::func, o, std::placeholders::_1);f(1);

原先只有在boost出現且極為受限的函數占位符,也加入到了標準庫,即std::placeholders,傳遞自定義參數

綁定類成員函數時,需要配合使用std:bind。

bind和placeholders,同樣可以用于普通函數:

int func1(int a, int b) {b = a + a + a;return a + b;}auto a = 1, b = 2;auto auto1 = std::bind(func1, std::placeholders::_1, std::placeholders::_2);LOG(INFO) << "directly run auto: " << auto1(a, b);

總結

以上是生活随笔為你收集整理的c++11新特性_c++11新特性(四)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。