[{"data":1,"prerenderedAt":3400},["ShallowReactive",2],{"wiki-page-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1100-lambda-biao-da-shi":3,"wiki-doc-items-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1100-lambda-biao-da-shi":2981,"language-switcher-data-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1100-lambda-biao-da-shi":3384,"wiki-i18n-paths-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1100-lambda-biao-da-shi":3399},{"id":4,"title":5,"body":6,"canonicalPath":2963,"chapterDepth":143,"chapterOrder":2964,"date":2965,"description":136,"docI18nKey":2966,"docKey":2967,"docRoot":2968,"docTitle":2969,"extension":2970,"i18nKey":2971,"isBlogPost":2972,"isWikiDoc":564,"isWikiIndex":2972,"layout":2973,"legacyPath":2973,"locale":2974,"localeSlug":2975,"meta":2976,"navigation":564,"path":2963,"seo":2977,"sourcePath":2978,"sourceStem":2971,"stem":2979,"wikiDepth":143,"__hash__":2980},"content\u002F_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1100-Lambda表达式.md","Lambda expression",{"type":7,"value":8,"toc":2935},"minimark",[9,14,18,36,39,43,46,49,99,108,195,202,258,265,282,289,318,322,342,353,360,364,386,393,397,520,524,528,531,1056,1062,1070,1074,1361,1365,1371,1375,1378,1644,1648,1654,1658,1665,1857,1861,1867,1871,1874,2354,2358,2364,2368,2371,2679,2683,2689,2702,2706,2709,2712,2809,2813,2846,2849,2866,2869,2897,2901,2931],[10,11,13],"h2",{"id":12},"what-problem-does-this-section-solve","What problem does this section solve?",[15,16,17],"p",{},"Many places require passing in a small piece of logic: sorting rules, filtering conditions, button callbacks, timer callbacks. The old approach typically has three methods:",[19,20,21,25,28],"ol",{},[22,23,24],"li",{},"Write an ordinary function.",[22,26,27],{},"Write a function pointer.",[22,29,30,31,35],{},"Write a function object, which is a class or struct with ",[32,33,34],"code",{},"operator()",".",[15,37,38],{},"All these approaches work, but small logic gets forced to distant locations, or an extra type has to be written. Lambda expressions allow you to write a small function on the spot where it's used and can capture external variables.",[10,40,42],{"id":41},"what-is-this-feature","What is this feature?",[15,44,45],{},"Lambda is an anonymous callable object. It resembles a function but is essentially a class object generated by the compiler.",[15,47,48],{},"The basic structure is:",[50,51,52,69],"table",{},[53,54,55],"thead",{},[56,57,58,63,66],"tr",{},[59,60,62],"th",{"align":61},"left","Part",[59,64,65],{"align":61},"example",[59,67,68],{"align":61},"Meaning",[70,71,72,86],"tbody",{},[56,73,74,78,83],{},[75,76,77],"td",{"align":61},"capture list",[75,79,80],{"align":61},[32,81,82],{},"[x, &y]",[75,84,85],{"align":61},"Which variables to take from the external scope?",[56,87,88,91,96],{},[75,89,90],{"align":61},"parameter list",[75,92,93],{"align":61},[32,94,95],{},"(int a, int b)",[75,97,98],{"align":61},"When invoking a lambda function, you typically pass parameters that define the input data for the function to process. The exact structure depends on the platform or runtime environment you're using. Here are the most common scenarios:",[100,101,103,104],"h3",{"id":102},"_1-aws-lambda-or-similar-serverless-platforms","1. ",[105,106,107],"strong",{},"AWS Lambda (or similar serverless platforms)",[109,110,111,119,127],"ul",{},[22,112,113,118],{},[105,114,115],{},[32,116,117],{},"event",": A JSON-serializable object that contains the input data for the function. This could be an API Gateway request, S3 event, DynamoDB stream, or custom event.",[22,120,121,126],{},[105,122,123],{},[32,124,125],{},"context",": An object provided by the runtime containing runtime information (e.g., function name, request ID, time remaining).",[22,128,129,130],{},"Example invocation:\n",[131,132,137],"pre",{"className":133,"code":134,"language":135,"meta":136,"style":136},"language-json shiki shiki-themes github-light github-dark","{\n  \"key1\": \"value1\",\n  \"key2\": \"value2\",\n  \"key3\": \"value3\"\n}\n","json","",[32,138,139,148,165,178,189],{"__ignoreMap":136},[140,141,144],"span",{"class":142,"line":143},"line",1,[140,145,147],{"class":146},"sVt8B","{\n",[140,149,151,155,158,162],{"class":142,"line":150},2,[140,152,154],{"class":153},"sj4cs","  \"key1\"",[140,156,157],{"class":146},": ",[140,159,161],{"class":160},"sZZnC","\"value1\"",[140,163,164],{"class":146},",\n",[140,166,168,171,173,176],{"class":142,"line":167},3,[140,169,170],{"class":153},"  \"key2\"",[140,172,157],{"class":146},[140,174,175],{"class":160},"\"value2\"",[140,177,164],{"class":146},[140,179,181,184,186],{"class":142,"line":180},4,[140,182,183],{"class":153},"  \"key3\"",[140,185,157],{"class":146},[140,187,188],{"class":160},"\"value3\"\n",[140,190,192],{"class":142,"line":191},5,[140,193,194],{"class":146},"}\n",[100,196,198,199],{"id":197},"_2-general-programming-eg-python-javascript","2. ",[105,200,201],{},"General Programming (e.g., Python, JavaScript)",[109,203,204,207],{},[22,205,206],{},"In languages like Python, a lambda is an anonymous function that can take arguments.",[22,208,209,210],{},"Example:\n",[131,211,215],{"className":212,"code":213,"language":214,"meta":136,"style":136},"language-python shiki shiki-themes github-light github-dark","square = lambda x: x ** 2\nresult = square(5)  # Pass '5' as the argument\n","python",[32,216,217,238],{"__ignoreMap":136},[140,218,219,222,226,229,232,235],{"class":142,"line":143},[140,220,221],{"class":146},"square ",[140,223,225],{"class":224},"szBVR","=",[140,227,228],{"class":224}," lambda",[140,230,231],{"class":146}," x: x ",[140,233,234],{"class":224},"**",[140,236,237],{"class":153}," 2\n",[140,239,240,243,245,248,251,254],{"class":142,"line":150},[140,241,242],{"class":146},"result ",[140,244,225],{"class":224},[140,246,247],{"class":146}," square(",[140,249,250],{"class":153},"5",[140,252,253],{"class":146},")  ",[140,255,257],{"class":256},"sJ8bj","# Pass '5' as the argument\n",[100,259,261,262],{"id":260},"_3-cloud-functions-eg-google-cloud-functions-azure-functions","3. ",[105,263,264],{},"Cloud Functions (e.g., Google Cloud Functions, Azure Functions)",[109,266,267,279],{},[22,268,269,270,272,273,275,276,35],{},"Similar to AWS Lambda, they typically expect an ",[32,271,117],{}," object and sometimes a ",[32,274,125],{}," or ",[32,277,278],{},"callback",[22,280,281],{},"The event structure is often predefined by the trigger (e.g., HTTP request, Pub\u002FSub message).",[100,283,285,286],{"id":284},"_4-customin-house-systems","4. ",[105,287,288],{},"Custom\u002FIn-house Systems",[109,290,291],{},[22,292,293,294],{},"You may define your own invocation protocol. Common patterns include:\n",[109,295,296,304,312],{},[22,297,298,157,301],{},[105,299,300],{},"JSON payload",[32,302,303],{},"{ \"action\": \"process\", \"data\": {...} }",[22,305,306,157,309],{},[105,307,308],{},"Simple arguments",[32,310,311],{},"my_lambda(arg1, arg2)",[22,313,314,317],{},[105,315,316],{},"Message queue",": Sending a serialized message that the lambda consumes.",[100,319,321],{"id":320},"key-tips","Key Tips:",[109,323,324,330,336],{},[22,325,326,329],{},[105,327,328],{},"Check documentation",": The exact parameters depend on how the lambda was deployed and its trigger.",[22,331,332,335],{},[105,333,334],{},"Start simple",": Often, the event object contains the essential data needed for processing.",[22,337,338,341],{},[105,339,340],{},"Use context wisely",": The context object (if available) helps with logging, timeouts, and other runtime details.",[15,343,344,345,348,349,352],{},"If you have a specific platform or use case in mind, I can provide more tailored details!|\n|return value|",[32,346,347],{},"-> int","|Return type, often can be omitted|\n|Function body|",[32,350,351],{},"{ return a + b; }","|The code that is actually executed|",[15,354,355,356,359],{},"The complete form can be written as ",[32,357,358],{},"[x](int n) -> int { return x + n; }",", and in common cases, the return type can be omitted.",[10,361,363],{"id":362},"c-standard-version","C++ standard version",[109,365,366,369,375],{},[22,367,368],{},"C++11: Basic Lambda.",[22,370,371,372,35],{},"C++14: Generic Lambdas, where parameters can be specified as ",[32,373,374],{},"auto",[22,376,377,378,381,382,385],{},"C++17: ",[32,379,380],{},"constexpr"," Lambda, ",[32,383,384],{},"[*this]"," capture.",[15,387,388,389,392],{},"Lambda is a language feature and does not require extra header files. Only when used in conjunction with tools from libraries such as STL algorithms and ",[32,390,391],{},"std::function"," do you need to include the corresponding header files.",[10,394,396],{"id":395},"capture-list-quick-reference","Capture List Quick Reference",[50,398,399,411],{},[53,400,401],{},[56,402,403,406,408],{},[59,404,405],{"align":61},"writing method",[59,407,68],{"align":61},[59,409,410],{"align":61},"Applicable Scenarios",[70,412,413,426,442,457,469,482,495,508],{},[56,414,415,420,423],{},[75,416,417],{"align":61},[32,418,419],{},"[]",[75,421,422],{"align":61},"Do not capture external variables.",[75,424,425],{"align":61},"Only use parameters or local temporary variables.",[56,427,428,433,439],{},[75,429,430],{"align":61},[32,431,432],{},"[x]",[75,434,435,436],{"align":61},"Capture by value ",[32,437,438],{},"x",[75,440,441],{"align":61},"Save a copy, suitable for saving callbacks.",[56,443,444,449,454],{},[75,445,446],{"align":61},[32,447,448],{},"[&x]",[75,450,451,452],{"align":61},"Capture by reference ",[32,453,438],{},[75,455,456],{"align":61},"Need to modify external variables while ensuring their lifecycle.",[56,458,459,463,466],{},[75,460,461],{"align":61},[32,462,82],{},[75,464,465],{"align":61},"Hybrid Capture",[75,467,468],{"align":61},"Clarify which are copies and which are references",[56,470,471,476,479],{},[75,472,473],{"align":61},[32,474,475],{},"[=]",[75,477,478],{"align":61},"captures used variables by value by default",[75,480,481],{"align":61},"Small examples are convenient for learning, but avoid overusing them in actual projects.",[56,483,484,489,492],{},[75,485,486],{"align":61},[32,487,488],{},"[&]",[75,490,491],{"align":61},"Capture used variables by default",[75,493,494],{"align":61},"Especially dangerous in asynchronous or saved callbacks.",[56,496,497,502,505],{},[75,498,499],{"align":61},[32,500,501],{},"[this]",[75,503,504],{"align":61},"Capture the current object pointer",[75,506,507],{"align":61},"Objects must outlive lambdas.",[56,509,510,514,517],{},[75,511,512],{"align":61},[32,513,384],{},[75,515,516],{"align":61},"Capture a copy of the current object",[75,518,519],{"align":61},"Available since C++17, useful for avoiding dangling references",[10,521,523],{"id":522},"example-code","Example code",[100,525,527],{"id":526},"example-1-differences-between-the-old-callback-style-and-lambda-expressions","Example 1: Differences Between the Old Callback Style and Lambda Expressions",[15,529,530],{},"Both regular functions and function objects can serve as algorithm conditions, but Lambda is more suitable for writing short local logic.",[131,532,536],{"className":533,"code":534,"language":535,"meta":136,"style":136},"language-cpp shiki shiki-themes github-light github-dark","#include \u003Calgorithm>\n#include \u003Ciostream>\n#include \u003Cvector>\n\nbool is_even(int n)\n{\n    return n % 2 == 0;\n}\n\nstruct GreaterThan\n{\n    int limit;\n\n    bool operator()(int n) const\n    {\n        return n > limit;\n    }\n};\n\nint main()\n{\n    \u002F\u002F 程序从 main 函数开始执行，下面的语句会按顺序运行。\n    \u002F\u002F vector 是动态数组，元素数量可以在运行时变化。\n    std::vector\u003Cint> numbers = {1, 2, 3, 4, 5, 6};\n\n    int even_count = std::count_if(numbers.begin(), numbers.end(), is_even);\n    std::cout \u003C\u003C \"even count = \" \u003C\u003C even_count \u003C\u003C \"\\n\";\n\n    int greater_count1 = std::count_if(numbers.begin(), numbers.end(), GreaterThan{3});\n    std::cout \u003C\u003C \"> 3 count (functor) = \" \u003C\u003C greater_count1 \u003C\u003C \"\\n\";\n\n    int limit = 3;\n    int greater_count2 = std::count_if(numbers.begin(), numbers.end(),\n                                       [limit](int n) {\n                                           return n > limit;\n                                       });\n    std::cout \u003C\u003C \"> 3 count (lambda) = \" \u003C\u003C greater_count2 \u003C\u003C \"\\n\";\n\n    return 0;\n}\n","cpp",[32,537,538,546,553,560,566,588,593,617,622,627,636,641,650,655,679,685,698,704,710,715,726,731,737,743,793,798,832,864,869,901,927,932,947,974,993,1005,1011,1037,1042,1051],{"__ignoreMap":136},[140,539,540,543],{"class":142,"line":143},[140,541,542],{"class":224},"#include",[140,544,545],{"class":160}," \u003Calgorithm>\n",[140,547,548,550],{"class":142,"line":150},[140,549,542],{"class":224},[140,551,552],{"class":160}," \u003Ciostream>\n",[140,554,555,557],{"class":142,"line":167},[140,556,542],{"class":224},[140,558,559],{"class":160}," \u003Cvector>\n",[140,561,562],{"class":142,"line":180},[140,563,565],{"emptyLinePlaceholder":564},true,"\n",[140,567,568,571,575,578,581,585],{"class":142,"line":191},[140,569,570],{"class":224},"bool",[140,572,574],{"class":573},"sScJk"," is_even",[140,576,577],{"class":146},"(",[140,579,580],{"class":224},"int",[140,582,584],{"class":583},"s4XuR"," n",[140,586,587],{"class":146},")\n",[140,589,591],{"class":142,"line":590},6,[140,592,147],{"class":146},[140,594,596,599,602,605,608,611,614],{"class":142,"line":595},7,[140,597,598],{"class":224},"    return",[140,600,601],{"class":146}," n ",[140,603,604],{"class":224},"%",[140,606,607],{"class":153}," 2",[140,609,610],{"class":224}," ==",[140,612,613],{"class":153}," 0",[140,615,616],{"class":146},";\n",[140,618,620],{"class":142,"line":619},8,[140,621,194],{"class":146},[140,623,625],{"class":142,"line":624},9,[140,626,565],{"emptyLinePlaceholder":564},[140,628,630,633],{"class":142,"line":629},10,[140,631,632],{"class":224},"struct",[140,634,635],{"class":573}," GreaterThan\n",[140,637,639],{"class":142,"line":638},11,[140,640,147],{"class":146},[140,642,644,647],{"class":142,"line":643},12,[140,645,646],{"class":224},"    int",[140,648,649],{"class":146}," limit;\n",[140,651,653],{"class":142,"line":652},13,[140,654,565],{"emptyLinePlaceholder":564},[140,656,658,661,664,667,669,671,673,676],{"class":142,"line":657},14,[140,659,660],{"class":224},"    bool",[140,662,663],{"class":224}," operator",[140,665,666],{"class":573},"()",[140,668,577],{"class":146},[140,670,580],{"class":224},[140,672,584],{"class":583},[140,674,675],{"class":146},") ",[140,677,678],{"class":224},"const\n",[140,680,682],{"class":142,"line":681},15,[140,683,684],{"class":146},"    {\n",[140,686,688,691,693,696],{"class":142,"line":687},16,[140,689,690],{"class":224},"        return",[140,692,601],{"class":146},[140,694,695],{"class":224},">",[140,697,649],{"class":146},[140,699,701],{"class":142,"line":700},17,[140,702,703],{"class":146},"    }\n",[140,705,707],{"class":142,"line":706},18,[140,708,709],{"class":146},"};\n",[140,711,713],{"class":142,"line":712},19,[140,714,565],{"emptyLinePlaceholder":564},[140,716,718,720,723],{"class":142,"line":717},20,[140,719,580],{"class":224},[140,721,722],{"class":573}," main",[140,724,725],{"class":146},"()\n",[140,727,729],{"class":142,"line":728},21,[140,730,147],{"class":146},[140,732,734],{"class":142,"line":733},22,[140,735,736],{"class":256},"    \u002F\u002F 程序从 main 函数开始执行，下面的语句会按顺序运行。\n",[140,738,740],{"class":142,"line":739},23,[140,741,742],{"class":256},"    \u002F\u002F vector 是动态数组，元素数量可以在运行时变化。\n",[140,744,746,749,752,755,758,760,763,766,769,772,774,777,779,782,784,786,788,791],{"class":142,"line":745},24,[140,747,748],{"class":573},"    std",[140,750,751],{"class":146},"::vector",[140,753,754],{"class":224},"\u003Cint>",[140,756,757],{"class":146}," numbers ",[140,759,225],{"class":224},[140,761,762],{"class":146}," {",[140,764,765],{"class":153},"1",[140,767,768],{"class":146},", ",[140,770,771],{"class":153},"2",[140,773,768],{"class":146},[140,775,776],{"class":153},"3",[140,778,768],{"class":146},[140,780,781],{"class":153},"4",[140,783,768],{"class":146},[140,785,250],{"class":153},[140,787,768],{"class":146},[140,789,790],{"class":153},"6",[140,792,709],{"class":146},[140,794,796],{"class":142,"line":795},25,[140,797,565],{"emptyLinePlaceholder":564},[140,799,801,803,806,808,811,814,817,820,823,826,829],{"class":142,"line":800},26,[140,802,646],{"class":224},[140,804,805],{"class":146}," even_count ",[140,807,225],{"class":224},[140,809,810],{"class":573}," std",[140,812,813],{"class":146},"::",[140,815,816],{"class":573},"count_if",[140,818,819],{"class":146},"(numbers.",[140,821,822],{"class":573},"begin",[140,824,825],{"class":146},"(), numbers.",[140,827,828],{"class":573},"end",[140,830,831],{"class":146},"(), is_even);\n",[140,833,835,837,840,843,846,849,851,853,856,859,862],{"class":142,"line":834},27,[140,836,748],{"class":573},[140,838,839],{"class":146},"::cout ",[140,841,842],{"class":224},"\u003C\u003C",[140,844,845],{"class":160}," \"even count = \"",[140,847,848],{"class":224}," \u003C\u003C",[140,850,805],{"class":146},[140,852,842],{"class":224},[140,854,855],{"class":160}," \"",[140,857,858],{"class":153},"\\n",[140,860,861],{"class":160},"\"",[140,863,616],{"class":146},[140,865,867],{"class":142,"line":866},28,[140,868,565],{"emptyLinePlaceholder":564},[140,870,872,874,877,879,881,883,885,887,889,891,893,896,898],{"class":142,"line":871},29,[140,873,646],{"class":224},[140,875,876],{"class":146}," greater_count1 ",[140,878,225],{"class":224},[140,880,810],{"class":573},[140,882,813],{"class":146},[140,884,816],{"class":573},[140,886,819],{"class":146},[140,888,822],{"class":573},[140,890,825],{"class":146},[140,892,828],{"class":573},[140,894,895],{"class":146},"(), GreaterThan{",[140,897,776],{"class":153},[140,899,900],{"class":146},"});\n",[140,902,904,906,908,910,913,915,917,919,921,923,925],{"class":142,"line":903},30,[140,905,748],{"class":573},[140,907,839],{"class":146},[140,909,842],{"class":224},[140,911,912],{"class":160}," \"> 3 count (functor) = \"",[140,914,848],{"class":224},[140,916,876],{"class":146},[140,918,842],{"class":224},[140,920,855],{"class":160},[140,922,858],{"class":153},[140,924,861],{"class":160},[140,926,616],{"class":146},[140,928,930],{"class":142,"line":929},31,[140,931,565],{"emptyLinePlaceholder":564},[140,933,935,937,940,942,945],{"class":142,"line":934},32,[140,936,646],{"class":224},[140,938,939],{"class":146}," limit ",[140,941,225],{"class":224},[140,943,944],{"class":153}," 3",[140,946,616],{"class":146},[140,948,950,952,955,957,959,961,963,965,967,969,971],{"class":142,"line":949},33,[140,951,646],{"class":224},[140,953,954],{"class":146}," greater_count2 ",[140,956,225],{"class":224},[140,958,810],{"class":573},[140,960,813],{"class":146},[140,962,816],{"class":573},[140,964,819],{"class":146},[140,966,822],{"class":573},[140,968,825],{"class":146},[140,970,828],{"class":573},[140,972,973],{"class":146},"(),\n",[140,975,977,980,983,986,988,990],{"class":142,"line":976},34,[140,978,979],{"class":146},"                                       [",[140,981,982],{"class":583},"limit",[140,984,985],{"class":146},"](",[140,987,580],{"class":224},[140,989,584],{"class":583},[140,991,992],{"class":146},") {\n",[140,994,996,999,1001,1003],{"class":142,"line":995},35,[140,997,998],{"class":224},"                                           return",[140,1000,601],{"class":146},[140,1002,695],{"class":224},[140,1004,649],{"class":146},[140,1006,1008],{"class":142,"line":1007},36,[140,1009,1010],{"class":146},"                                       });\n",[140,1012,1014,1016,1018,1020,1023,1025,1027,1029,1031,1033,1035],{"class":142,"line":1013},37,[140,1015,748],{"class":573},[140,1017,839],{"class":146},[140,1019,842],{"class":224},[140,1021,1022],{"class":160}," \"> 3 count (lambda) = \"",[140,1024,848],{"class":224},[140,1026,954],{"class":146},[140,1028,842],{"class":224},[140,1030,855],{"class":160},[140,1032,858],{"class":153},[140,1034,861],{"class":160},[140,1036,616],{"class":146},[140,1038,1040],{"class":142,"line":1039},38,[140,1041,565],{"emptyLinePlaceholder":564},[140,1043,1045,1047,1049],{"class":142,"line":1044},39,[140,1046,598],{"class":224},[140,1048,613],{"class":153},[140,1050,616],{"class":146},[140,1052,1054],{"class":142,"line":1053},40,[140,1055,194],{"class":146},[15,1057,1058,1061],{},[105,1059,1060],{},"Results","：",[131,1063,1068],{"className":1064,"code":1066,"language":1067,"meta":136},[1065],"language-text","even count = 3\n> 3 count (functor) = 3\n> 3 count (lambda) = 3\n","text",[32,1069,1066],{"__ignoreMap":136},[100,1071,1073],{"id":1072},"example-2-basic-lambda-syntax-parameters-and-return-values","Example 2: Basic Lambda Syntax, Parameters, and Return Values",[131,1075,1077],{"className":533,"code":1076,"language":535,"meta":136,"style":136},"#include \u003Ciostream>\n#include \u003Cstring>\n\nint main()\n{\n    \u002F\u002F 程序从 main 函数开始执行，下面的语句会按顺序运行。\n    auto add = [](int a, int b) {\n        return a + b;\n    };\n\n    auto describe_score = [](int score) -> std::string {\n        if (score >= 60)\n        {\n            return \"pass\";\n        }\n        return \"fail\";\n    };\n\n    std::cout \u003C\u003C \"add(3, 5) = \" \u003C\u003C add(3, 5) \u003C\u003C \"\\n\";\n    std::cout \u003C\u003C \"score 80 is \" \u003C\u003C describe_score(80) \u003C\u003C \"\\n\";\n    std::cout \u003C\u003C \"score 40 is \" \u003C\u003C describe_score(40) \u003C\u003C \"\\n\";\n\n    \u002F\u002F 返回 0 表示程序正常结束。\n    return 0;\n}\n",[32,1078,1079,1085,1092,1096,1104,1108,1112,1139,1152,1157,1161,1186,1202,1207,1217,1222,1231,1235,1239,1275,1308,1340,1344,1349,1357],{"__ignoreMap":136},[140,1080,1081,1083],{"class":142,"line":143},[140,1082,542],{"class":224},[140,1084,552],{"class":160},[140,1086,1087,1089],{"class":142,"line":150},[140,1088,542],{"class":224},[140,1090,1091],{"class":160}," \u003Cstring>\n",[140,1093,1094],{"class":142,"line":167},[140,1095,565],{"emptyLinePlaceholder":564},[140,1097,1098,1100,1102],{"class":142,"line":180},[140,1099,580],{"class":224},[140,1101,722],{"class":573},[140,1103,725],{"class":146},[140,1105,1106],{"class":142,"line":191},[140,1107,147],{"class":146},[140,1109,1110],{"class":142,"line":590},[140,1111,736],{"class":256},[140,1113,1114,1117,1120,1122,1125,1127,1130,1132,1134,1137],{"class":142,"line":595},[140,1115,1116],{"class":224},"    auto",[140,1118,1119],{"class":146}," add ",[140,1121,225],{"class":224},[140,1123,1124],{"class":146}," [](",[140,1126,580],{"class":224},[140,1128,1129],{"class":583}," a",[140,1131,768],{"class":146},[140,1133,580],{"class":224},[140,1135,1136],{"class":583}," b",[140,1138,992],{"class":146},[140,1140,1141,1143,1146,1149],{"class":142,"line":619},[140,1142,690],{"class":224},[140,1144,1145],{"class":146}," a ",[140,1147,1148],{"class":224},"+",[140,1150,1151],{"class":146}," b;\n",[140,1153,1154],{"class":142,"line":624},[140,1155,1156],{"class":146},"    };\n",[140,1158,1159],{"class":142,"line":629},[140,1160,565],{"emptyLinePlaceholder":564},[140,1162,1163,1165,1168,1170,1172,1174,1177,1180,1183],{"class":142,"line":638},[140,1164,1116],{"class":224},[140,1166,1167],{"class":146}," describe_score ",[140,1169,225],{"class":224},[140,1171,1124],{"class":146},[140,1173,580],{"class":224},[140,1175,1176],{"class":583}," score",[140,1178,1179],{"class":146},") -> ",[140,1181,1182],{"class":224},"std::string",[140,1184,1185],{"class":146}," {\n",[140,1187,1188,1191,1194,1197,1200],{"class":142,"line":643},[140,1189,1190],{"class":224},"        if",[140,1192,1193],{"class":146}," (score ",[140,1195,1196],{"class":224},">=",[140,1198,1199],{"class":153}," 60",[140,1201,587],{"class":146},[140,1203,1204],{"class":142,"line":652},[140,1205,1206],{"class":146},"        {\n",[140,1208,1209,1212,1215],{"class":142,"line":657},[140,1210,1211],{"class":224},"            return",[140,1213,1214],{"class":160}," \"pass\"",[140,1216,616],{"class":146},[140,1218,1219],{"class":142,"line":681},[140,1220,1221],{"class":146},"        }\n",[140,1223,1224,1226,1229],{"class":142,"line":687},[140,1225,690],{"class":224},[140,1227,1228],{"class":160}," \"fail\"",[140,1230,616],{"class":146},[140,1232,1233],{"class":142,"line":700},[140,1234,1156],{"class":146},[140,1236,1237],{"class":142,"line":706},[140,1238,565],{"emptyLinePlaceholder":564},[140,1240,1241,1243,1245,1247,1250,1252,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273],{"class":142,"line":712},[140,1242,748],{"class":573},[140,1244,839],{"class":146},[140,1246,842],{"class":224},[140,1248,1249],{"class":160}," \"add(3, 5) = \"",[140,1251,848],{"class":224},[140,1253,1254],{"class":573}," add",[140,1256,577],{"class":146},[140,1258,776],{"class":153},[140,1260,768],{"class":146},[140,1262,250],{"class":153},[140,1264,675],{"class":146},[140,1266,842],{"class":224},[140,1268,855],{"class":160},[140,1270,858],{"class":153},[140,1272,861],{"class":160},[140,1274,616],{"class":146},[140,1276,1277,1279,1281,1283,1286,1288,1291,1293,1296,1298,1300,1302,1304,1306],{"class":142,"line":717},[140,1278,748],{"class":573},[140,1280,839],{"class":146},[140,1282,842],{"class":224},[140,1284,1285],{"class":160}," \"score 80 is \"",[140,1287,848],{"class":224},[140,1289,1290],{"class":573}," describe_score",[140,1292,577],{"class":146},[140,1294,1295],{"class":153},"80",[140,1297,675],{"class":146},[140,1299,842],{"class":224},[140,1301,855],{"class":160},[140,1303,858],{"class":153},[140,1305,861],{"class":160},[140,1307,616],{"class":146},[140,1309,1310,1312,1314,1316,1319,1321,1323,1325,1328,1330,1332,1334,1336,1338],{"class":142,"line":728},[140,1311,748],{"class":573},[140,1313,839],{"class":146},[140,1315,842],{"class":224},[140,1317,1318],{"class":160}," \"score 40 is \"",[140,1320,848],{"class":224},[140,1322,1290],{"class":573},[140,1324,577],{"class":146},[140,1326,1327],{"class":153},"40",[140,1329,675],{"class":146},[140,1331,842],{"class":224},[140,1333,855],{"class":160},[140,1335,858],{"class":153},[140,1337,861],{"class":160},[140,1339,616],{"class":146},[140,1341,1342],{"class":142,"line":733},[140,1343,565],{"emptyLinePlaceholder":564},[140,1345,1346],{"class":142,"line":739},[140,1347,1348],{"class":256},"    \u002F\u002F 返回 0 表示程序正常结束。\n",[140,1350,1351,1353,1355],{"class":142,"line":745},[140,1352,598],{"class":224},[140,1354,613],{"class":153},[140,1356,616],{"class":146},[140,1358,1359],{"class":142,"line":795},[140,1360,194],{"class":146},[15,1362,1363,1061],{},[105,1364,1060],{},[131,1366,1369],{"className":1367,"code":1368,"language":1067,"meta":136},[1065],"add(3, 5) = 8\nscore 80 is pass\nscore 40 is fail\n",[32,1370,1368],{"__ignoreMap":136},[100,1372,1374],{"id":1373},"example-3-capture-by-value-and-capture-by-reference","Example 3: capture by value and capture by reference",[15,1376,1377],{},"Capturing by value saves a copy at the time the lambda is defined; capturing by reference accesses the external variable itself.",[131,1379,1381],{"className":533,"code":1380,"language":535,"meta":136,"style":136},"#include \u003Ciostream>\n\nint main()\n{\n    \u002F\u002F 程序从 main 函数开始执行，下面的语句会按顺序运行。\n    int score = 10;\n\n    auto add_by_value = [score](int bonus) {\n        return score + bonus;\n    };\n\n    auto add_by_ref = [&score](int bonus) {\n        score += bonus;\n        return score;\n    };\n\n    score = 20;\n\n    std::cout \u003C\u003C \"value capture result = \" \u003C\u003C add_by_value(5) \u003C\u003C \"\\n\";\n    std::cout \u003C\u003C \"ref capture result = \" \u003C\u003C add_by_ref(5) \u003C\u003C \"\\n\";\n    std::cout \u003C\u003C \"score after ref capture = \" \u003C\u003C score \u003C\u003C \"\\n\";\n\n    \u002F\u002F 返回 0 表示程序正常结束。\n    return 0;\n}\n",[32,1382,1383,1389,1393,1401,1405,1409,1423,1427,1451,1462,1466,1470,1494,1504,1511,1515,1519,1531,1535,1567,1599,1624,1628,1632,1640],{"__ignoreMap":136},[140,1384,1385,1387],{"class":142,"line":143},[140,1386,542],{"class":224},[140,1388,552],{"class":160},[140,1390,1391],{"class":142,"line":150},[140,1392,565],{"emptyLinePlaceholder":564},[140,1394,1395,1397,1399],{"class":142,"line":167},[140,1396,580],{"class":224},[140,1398,722],{"class":573},[140,1400,725],{"class":146},[140,1402,1403],{"class":142,"line":180},[140,1404,147],{"class":146},[140,1406,1407],{"class":142,"line":191},[140,1408,736],{"class":256},[140,1410,1411,1413,1416,1418,1421],{"class":142,"line":590},[140,1412,646],{"class":224},[140,1414,1415],{"class":146}," score ",[140,1417,225],{"class":224},[140,1419,1420],{"class":153}," 10",[140,1422,616],{"class":146},[140,1424,1425],{"class":142,"line":595},[140,1426,565],{"emptyLinePlaceholder":564},[140,1428,1429,1431,1434,1436,1439,1442,1444,1446,1449],{"class":142,"line":619},[140,1430,1116],{"class":224},[140,1432,1433],{"class":146}," add_by_value ",[140,1435,225],{"class":224},[140,1437,1438],{"class":146}," [",[140,1440,1441],{"class":583},"score",[140,1443,985],{"class":146},[140,1445,580],{"class":224},[140,1447,1448],{"class":583}," bonus",[140,1450,992],{"class":146},[140,1452,1453,1455,1457,1459],{"class":142,"line":624},[140,1454,690],{"class":224},[140,1456,1415],{"class":146},[140,1458,1148],{"class":224},[140,1460,1461],{"class":146}," bonus;\n",[140,1463,1464],{"class":142,"line":629},[140,1465,1156],{"class":146},[140,1467,1468],{"class":142,"line":638},[140,1469,565],{"emptyLinePlaceholder":564},[140,1471,1472,1474,1477,1479,1481,1484,1486,1488,1490,1492],{"class":142,"line":643},[140,1473,1116],{"class":224},[140,1475,1476],{"class":146}," add_by_ref ",[140,1478,225],{"class":224},[140,1480,1438],{"class":146},[140,1482,1483],{"class":224},"&",[140,1485,1441],{"class":583},[140,1487,985],{"class":146},[140,1489,580],{"class":224},[140,1491,1448],{"class":583},[140,1493,992],{"class":146},[140,1495,1496,1499,1502],{"class":142,"line":652},[140,1497,1498],{"class":146},"        score ",[140,1500,1501],{"class":224},"+=",[140,1503,1461],{"class":146},[140,1505,1506,1508],{"class":142,"line":657},[140,1507,690],{"class":224},[140,1509,1510],{"class":146}," score;\n",[140,1512,1513],{"class":142,"line":681},[140,1514,1156],{"class":146},[140,1516,1517],{"class":142,"line":687},[140,1518,565],{"emptyLinePlaceholder":564},[140,1520,1521,1524,1526,1529],{"class":142,"line":700},[140,1522,1523],{"class":146},"    score ",[140,1525,225],{"class":224},[140,1527,1528],{"class":153}," 20",[140,1530,616],{"class":146},[140,1532,1533],{"class":142,"line":706},[140,1534,565],{"emptyLinePlaceholder":564},[140,1536,1537,1539,1541,1543,1546,1548,1551,1553,1555,1557,1559,1561,1563,1565],{"class":142,"line":712},[140,1538,748],{"class":573},[140,1540,839],{"class":146},[140,1542,842],{"class":224},[140,1544,1545],{"class":160}," \"value capture result = \"",[140,1547,848],{"class":224},[140,1549,1550],{"class":573}," add_by_value",[140,1552,577],{"class":146},[140,1554,250],{"class":153},[140,1556,675],{"class":146},[140,1558,842],{"class":224},[140,1560,855],{"class":160},[140,1562,858],{"class":153},[140,1564,861],{"class":160},[140,1566,616],{"class":146},[140,1568,1569,1571,1573,1575,1578,1580,1583,1585,1587,1589,1591,1593,1595,1597],{"class":142,"line":717},[140,1570,748],{"class":573},[140,1572,839],{"class":146},[140,1574,842],{"class":224},[140,1576,1577],{"class":160}," \"ref capture result = \"",[140,1579,848],{"class":224},[140,1581,1582],{"class":573}," add_by_ref",[140,1584,577],{"class":146},[140,1586,250],{"class":153},[140,1588,675],{"class":146},[140,1590,842],{"class":224},[140,1592,855],{"class":160},[140,1594,858],{"class":153},[140,1596,861],{"class":160},[140,1598,616],{"class":146},[140,1600,1601,1603,1605,1607,1610,1612,1614,1616,1618,1620,1622],{"class":142,"line":728},[140,1602,748],{"class":573},[140,1604,839],{"class":146},[140,1606,842],{"class":224},[140,1608,1609],{"class":160}," \"score after ref capture = \"",[140,1611,848],{"class":224},[140,1613,1415],{"class":146},[140,1615,842],{"class":224},[140,1617,855],{"class":160},[140,1619,858],{"class":153},[140,1621,861],{"class":160},[140,1623,616],{"class":146},[140,1625,1626],{"class":142,"line":733},[140,1627,565],{"emptyLinePlaceholder":564},[140,1629,1630],{"class":142,"line":739},[140,1631,1348],{"class":256},[140,1633,1634,1636,1638],{"class":142,"line":745},[140,1635,598],{"class":224},[140,1637,613],{"class":153},[140,1639,616],{"class":146},[140,1641,1642],{"class":142,"line":795},[140,1643,194],{"class":146},[15,1645,1646,1061],{},[105,1647,1060],{},[131,1649,1652],{"className":1650,"code":1651,"language":1067,"meta":136},[1065],"value capture result = 15\nref capture result = 25\nscore after ref capture = 25\n",[32,1653,1651],{"__ignoreMap":136},[100,1655,1657],{"id":1656},"example-4-mutable-allows-modification-of-copies-of-variables-captured-by-value","Example 4: mutable allows modification of copies of variables captured by value",[15,1659,1660,1661,1664],{},"Variables captured by value are read-only by default inside a lambda. With ",[32,1662,1663],{},"mutable",", you can modify the copy stored by the lambda itself, but it won't affect the outer variable.",[131,1666,1668],{"className":533,"code":1667,"language":535,"meta":136,"style":136},"#include \u003Ciostream>\n\nint main()\n{\n    \u002F\u002F 程序从 main 函数开始执行，下面的语句会按顺序运行。\n    int start = 0;\n\n    auto counter = [start]() mutable {\n        ++start;\n        return start;\n    };\n\n    std::cout \u003C\u003C \"counter() = \" \u003C\u003C counter() \u003C\u003C \"\\n\";\n    std::cout \u003C\u003C \"counter() = \" \u003C\u003C counter() \u003C\u003C \"\\n\";\n    std::cout \u003C\u003C \"outside start = \" \u003C\u003C start \u003C\u003C \"\\n\";\n\n    \u002F\u002F 返回 0 表示程序正常结束。\n    return 0;\n}\n",[32,1669,1670,1676,1680,1688,1692,1696,1709,1713,1734,1742,1749,1753,1757,1786,1812,1837,1841,1845,1853],{"__ignoreMap":136},[140,1671,1672,1674],{"class":142,"line":143},[140,1673,542],{"class":224},[140,1675,552],{"class":160},[140,1677,1678],{"class":142,"line":150},[140,1679,565],{"emptyLinePlaceholder":564},[140,1681,1682,1684,1686],{"class":142,"line":167},[140,1683,580],{"class":224},[140,1685,722],{"class":573},[140,1687,725],{"class":146},[140,1689,1690],{"class":142,"line":180},[140,1691,147],{"class":146},[140,1693,1694],{"class":142,"line":191},[140,1695,736],{"class":256},[140,1697,1698,1700,1703,1705,1707],{"class":142,"line":590},[140,1699,646],{"class":224},[140,1701,1702],{"class":146}," start ",[140,1704,225],{"class":224},[140,1706,613],{"class":153},[140,1708,616],{"class":146},[140,1710,1711],{"class":142,"line":595},[140,1712,565],{"emptyLinePlaceholder":564},[140,1714,1715,1717,1720,1722,1724,1727,1730,1732],{"class":142,"line":619},[140,1716,1116],{"class":224},[140,1718,1719],{"class":146}," counter ",[140,1721,225],{"class":224},[140,1723,1438],{"class":146},[140,1725,1726],{"class":583},"start",[140,1728,1729],{"class":146},"]() ",[140,1731,1663],{"class":224},[140,1733,1185],{"class":146},[140,1735,1736,1739],{"class":142,"line":624},[140,1737,1738],{"class":224},"        ++",[140,1740,1741],{"class":146},"start;\n",[140,1743,1744,1746],{"class":142,"line":629},[140,1745,690],{"class":224},[140,1747,1748],{"class":146}," start;\n",[140,1750,1751],{"class":142,"line":638},[140,1752,1156],{"class":146},[140,1754,1755],{"class":142,"line":643},[140,1756,565],{"emptyLinePlaceholder":564},[140,1758,1759,1761,1763,1765,1768,1770,1773,1776,1778,1780,1782,1784],{"class":142,"line":652},[140,1760,748],{"class":573},[140,1762,839],{"class":146},[140,1764,842],{"class":224},[140,1766,1767],{"class":160}," \"counter() = \"",[140,1769,848],{"class":224},[140,1771,1772],{"class":573}," counter",[140,1774,1775],{"class":146},"() ",[140,1777,842],{"class":224},[140,1779,855],{"class":160},[140,1781,858],{"class":153},[140,1783,861],{"class":160},[140,1785,616],{"class":146},[140,1787,1788,1790,1792,1794,1796,1798,1800,1802,1804,1806,1808,1810],{"class":142,"line":657},[140,1789,748],{"class":573},[140,1791,839],{"class":146},[140,1793,842],{"class":224},[140,1795,1767],{"class":160},[140,1797,848],{"class":224},[140,1799,1772],{"class":573},[140,1801,1775],{"class":146},[140,1803,842],{"class":224},[140,1805,855],{"class":160},[140,1807,858],{"class":153},[140,1809,861],{"class":160},[140,1811,616],{"class":146},[140,1813,1814,1816,1818,1820,1823,1825,1827,1829,1831,1833,1835],{"class":142,"line":681},[140,1815,748],{"class":573},[140,1817,839],{"class":146},[140,1819,842],{"class":224},[140,1821,1822],{"class":160}," \"outside start = \"",[140,1824,848],{"class":224},[140,1826,1702],{"class":146},[140,1828,842],{"class":224},[140,1830,855],{"class":160},[140,1832,858],{"class":153},[140,1834,861],{"class":160},[140,1836,616],{"class":146},[140,1838,1839],{"class":142,"line":687},[140,1840,565],{"emptyLinePlaceholder":564},[140,1842,1843],{"class":142,"line":700},[140,1844,1348],{"class":256},[140,1846,1847,1849,1851],{"class":142,"line":706},[140,1848,598],{"class":224},[140,1850,613],{"class":153},[140,1852,616],{"class":146},[140,1854,1855],{"class":142,"line":712},[140,1856,194],{"class":146},[15,1858,1859,1061],{},[105,1860,1060],{},[131,1862,1865],{"className":1863,"code":1864,"language":1067,"meta":136},[1065],"counter() = 1\ncounter() = 2\noutside start = 0\n",[32,1866,1864],{"__ignoreMap":136},[100,1868,1870],{"id":1869},"example-5-lambda-with-stl-algorithms","Example 5: Lambda with STL Algorithms",[15,1872,1873],{},"Lambda is most commonly paired with STL algorithms for operations like sorting, searching, counting, and transforming, where you can directly write the local logic right at the call site.",[131,1875,1877],{"className":533,"code":1876,"language":535,"meta":136,"style":136},"#include \u003Calgorithm>\n#include \u003Ciostream>\n#include \u003Cstring>\n#include \u003Cvector>\n\nint main()\n{\n    \u002F\u002F 程序从 main 函数开始执行，下面的语句会按顺序运行。\n    \u002F\u002F vector 是动态数组，元素数量可以在运行时变化。\n    std::vector\u003Cstd::string> names = {\"Bob\", \"Alice\", \"Charlie\", \"David\"};\n\n    std::sort(names.begin(), names.end(),\n              [](const std::string& a, const std::string& b) {\n                  if (a.size() == b.size())\n                  {\n                      return a \u003C b;\n                  }\n                  return a.size() \u003C b.size();\n              });\n\n    std::cout \u003C\u003C \"sort by length: \";\n    for (const auto& name : names)\n    {\n        std::cout \u003C\u003C name \u003C\u003C \" \";\n    }\n    std::cout \u003C\u003C \"\\n\";\n\n    int min_length = 6;\n    auto it = std::find_if(names.begin(), names.end(),\n                           [min_length](const std::string& name) {\n                               return name.size() >= static_cast\u003Cstd::size_t>(min_length);\n                           });\n\n    if (it != names.end())\n    {\n        std::cout \u003C\u003C \"first long name = \" \u003C\u003C *it \u003C\u003C \"\\n\";\n    }\n\n    return 0;\n}\n",[32,1878,1879,1885,1891,1897,1903,1907,1915,1919,1923,1927,1971,1975,1996,2031,2055,2060,2071,2076,2097,2102,2106,2119,2135,2139,2158,2162,2178,2182,2196,2222,2247,2274,2279,2283,2301,2305,2334,2338,2342,2350],{"__ignoreMap":136},[140,1880,1881,1883],{"class":142,"line":143},[140,1882,542],{"class":224},[140,1884,545],{"class":160},[140,1886,1887,1889],{"class":142,"line":150},[140,1888,542],{"class":224},[140,1890,552],{"class":160},[140,1892,1893,1895],{"class":142,"line":167},[140,1894,542],{"class":224},[140,1896,1091],{"class":160},[140,1898,1899,1901],{"class":142,"line":180},[140,1900,542],{"class":224},[140,1902,559],{"class":160},[140,1904,1905],{"class":142,"line":191},[140,1906,565],{"emptyLinePlaceholder":564},[140,1908,1909,1911,1913],{"class":142,"line":590},[140,1910,580],{"class":224},[140,1912,722],{"class":573},[140,1914,725],{"class":146},[140,1916,1917],{"class":142,"line":595},[140,1918,147],{"class":146},[140,1920,1921],{"class":142,"line":619},[140,1922,736],{"class":256},[140,1924,1925],{"class":142,"line":624},[140,1926,742],{"class":256},[140,1928,1929,1931,1933,1936,1939,1942,1944,1947,1949,1951,1954,1956,1959,1961,1964,1966,1969],{"class":142,"line":629},[140,1930,748],{"class":573},[140,1932,751],{"class":146},[140,1934,1935],{"class":224},"\u003C",[140,1937,1938],{"class":573},"std",[140,1940,1941],{"class":146},"::string",[140,1943,695],{"class":224},[140,1945,1946],{"class":146}," names ",[140,1948,225],{"class":224},[140,1950,762],{"class":146},[140,1952,1953],{"class":160},"\"Bob\"",[140,1955,768],{"class":146},[140,1957,1958],{"class":160},"\"Alice\"",[140,1960,768],{"class":146},[140,1962,1963],{"class":160},"\"Charlie\"",[140,1965,768],{"class":146},[140,1967,1968],{"class":160},"\"David\"",[140,1970,709],{"class":146},[140,1972,1973],{"class":142,"line":638},[140,1974,565],{"emptyLinePlaceholder":564},[140,1976,1977,1979,1981,1984,1987,1989,1992,1994],{"class":142,"line":643},[140,1978,748],{"class":573},[140,1980,813],{"class":146},[140,1982,1983],{"class":573},"sort",[140,1985,1986],{"class":146},"(names.",[140,1988,822],{"class":573},[140,1990,1991],{"class":146},"(), names.",[140,1993,828],{"class":573},[140,1995,973],{"class":146},[140,1997,1998,2001,2004,2006,2008,2011,2013,2015,2017,2019,2021,2023,2025,2027,2029],{"class":142,"line":652},[140,1999,2000],{"class":146},"              [](",[140,2002,2003],{"class":224},"const",[140,2005,810],{"class":573},[140,2007,813],{"class":146},[140,2009,2010],{"class":573},"string",[140,2012,1483],{"class":224},[140,2014,1129],{"class":583},[140,2016,768],{"class":146},[140,2018,2003],{"class":224},[140,2020,810],{"class":573},[140,2022,813],{"class":146},[140,2024,2010],{"class":573},[140,2026,1483],{"class":224},[140,2028,1136],{"class":583},[140,2030,992],{"class":146},[140,2032,2033,2036,2039,2042,2044,2047,2050,2052],{"class":142,"line":657},[140,2034,2035],{"class":224},"                  if",[140,2037,2038],{"class":146}," (a.",[140,2040,2041],{"class":573},"size",[140,2043,1775],{"class":146},[140,2045,2046],{"class":224},"==",[140,2048,2049],{"class":146}," b.",[140,2051,2041],{"class":573},[140,2053,2054],{"class":146},"())\n",[140,2056,2057],{"class":142,"line":681},[140,2058,2059],{"class":146},"                  {\n",[140,2061,2062,2065,2067,2069],{"class":142,"line":687},[140,2063,2064],{"class":224},"                      return",[140,2066,1145],{"class":146},[140,2068,1935],{"class":224},[140,2070,1151],{"class":146},[140,2072,2073],{"class":142,"line":700},[140,2074,2075],{"class":146},"                  }\n",[140,2077,2078,2081,2084,2086,2088,2090,2092,2094],{"class":142,"line":706},[140,2079,2080],{"class":224},"                  return",[140,2082,2083],{"class":146}," a.",[140,2085,2041],{"class":573},[140,2087,1775],{"class":146},[140,2089,1935],{"class":224},[140,2091,2049],{"class":146},[140,2093,2041],{"class":573},[140,2095,2096],{"class":146},"();\n",[140,2098,2099],{"class":142,"line":712},[140,2100,2101],{"class":146},"              });\n",[140,2103,2104],{"class":142,"line":717},[140,2105,565],{"emptyLinePlaceholder":564},[140,2107,2108,2110,2112,2114,2117],{"class":142,"line":728},[140,2109,748],{"class":573},[140,2111,839],{"class":146},[140,2113,842],{"class":224},[140,2115,2116],{"class":160}," \"sort by length: \"",[140,2118,616],{"class":146},[140,2120,2121,2124,2127,2129,2132],{"class":142,"line":733},[140,2122,2123],{"class":224},"    for",[140,2125,2126],{"class":146}," (",[140,2128,2003],{"class":224},[140,2130,2131],{"class":224}," auto&",[140,2133,2134],{"class":146}," name : names)\n",[140,2136,2137],{"class":142,"line":739},[140,2138,684],{"class":146},[140,2140,2141,2144,2146,2148,2151,2153,2156],{"class":142,"line":745},[140,2142,2143],{"class":573},"        std",[140,2145,839],{"class":146},[140,2147,842],{"class":224},[140,2149,2150],{"class":146}," name ",[140,2152,842],{"class":224},[140,2154,2155],{"class":160}," \" \"",[140,2157,616],{"class":146},[140,2159,2160],{"class":142,"line":795},[140,2161,703],{"class":146},[140,2163,2164,2166,2168,2170,2172,2174,2176],{"class":142,"line":800},[140,2165,748],{"class":573},[140,2167,839],{"class":146},[140,2169,842],{"class":224},[140,2171,855],{"class":160},[140,2173,858],{"class":153},[140,2175,861],{"class":160},[140,2177,616],{"class":146},[140,2179,2180],{"class":142,"line":834},[140,2181,565],{"emptyLinePlaceholder":564},[140,2183,2184,2186,2189,2191,2194],{"class":142,"line":866},[140,2185,646],{"class":224},[140,2187,2188],{"class":146}," min_length ",[140,2190,225],{"class":224},[140,2192,2193],{"class":153}," 6",[140,2195,616],{"class":146},[140,2197,2198,2200,2203,2205,2207,2209,2212,2214,2216,2218,2220],{"class":142,"line":871},[140,2199,1116],{"class":224},[140,2201,2202],{"class":146}," it ",[140,2204,225],{"class":224},[140,2206,810],{"class":573},[140,2208,813],{"class":146},[140,2210,2211],{"class":573},"find_if",[140,2213,1986],{"class":146},[140,2215,822],{"class":573},[140,2217,1991],{"class":146},[140,2219,828],{"class":573},[140,2221,973],{"class":146},[140,2223,2224,2227,2230,2232,2234,2236,2238,2240,2242,2245],{"class":142,"line":903},[140,2225,2226],{"class":146},"                           [",[140,2228,2229],{"class":583},"min_length",[140,2231,985],{"class":146},[140,2233,2003],{"class":224},[140,2235,810],{"class":573},[140,2237,813],{"class":146},[140,2239,2010],{"class":573},[140,2241,1483],{"class":224},[140,2243,2244],{"class":583}," name",[140,2246,992],{"class":146},[140,2248,2249,2252,2255,2257,2259,2261,2264,2266,2268,2271],{"class":142,"line":929},[140,2250,2251],{"class":224},"                               return",[140,2253,2254],{"class":146}," name.",[140,2256,2041],{"class":573},[140,2258,1775],{"class":146},[140,2260,1196],{"class":224},[140,2262,2263],{"class":224}," static_cast\u003C",[140,2265,1938],{"class":573},[140,2267,813],{"class":146},[140,2269,2270],{"class":224},"size_t>",[140,2272,2273],{"class":146},"(min_length);\n",[140,2275,2276],{"class":142,"line":934},[140,2277,2278],{"class":146},"                           });\n",[140,2280,2281],{"class":142,"line":949},[140,2282,565],{"emptyLinePlaceholder":564},[140,2284,2285,2288,2291,2294,2297,2299],{"class":142,"line":976},[140,2286,2287],{"class":224},"    if",[140,2289,2290],{"class":146}," (it ",[140,2292,2293],{"class":224},"!=",[140,2295,2296],{"class":146}," names.",[140,2298,828],{"class":573},[140,2300,2054],{"class":146},[140,2302,2303],{"class":142,"line":995},[140,2304,684],{"class":146},[140,2306,2307,2309,2311,2313,2316,2318,2321,2324,2326,2328,2330,2332],{"class":142,"line":1007},[140,2308,2143],{"class":573},[140,2310,839],{"class":146},[140,2312,842],{"class":224},[140,2314,2315],{"class":160}," \"first long name = \"",[140,2317,848],{"class":224},[140,2319,2320],{"class":224}," *",[140,2322,2323],{"class":146},"it ",[140,2325,842],{"class":224},[140,2327,855],{"class":160},[140,2329,858],{"class":153},[140,2331,861],{"class":160},[140,2333,616],{"class":146},[140,2335,2336],{"class":142,"line":1013},[140,2337,703],{"class":146},[140,2339,2340],{"class":142,"line":1039},[140,2341,565],{"emptyLinePlaceholder":564},[140,2343,2344,2346,2348],{"class":142,"line":1044},[140,2345,598],{"class":224},[140,2347,613],{"class":153},[140,2349,616],{"class":146},[140,2351,2352],{"class":142,"line":1053},[140,2353,194],{"class":146},[15,2355,2356,1061],{},[105,2357,1060],{},[131,2359,2362],{"className":2360,"code":2361,"language":1067,"meta":136},[1065],"sort by length: Bob Alice David Charlie\nfirst long name = Charlie\n",[32,2363,2361],{"__ignoreMap":136},[100,2365,2367],{"id":2366},"example-6-be-mindful-of-lifecycle-capture-when-saving-callbacks","Example 6: Be mindful of lifecycle capture when saving callbacks",[15,2369,2370],{},"If a lambda is invoked immediately, reference capture usually seems fine; if stored in a container, thread, timer, or asynchronous callback, the lambda might execute after the local variables have gone out of scope. When saving a callback, prefer capturing the necessary data by value.",[131,2372,2374],{"className":533,"code":2373,"language":535,"meta":136,"style":136},"#include \u003Cfunctional>\n#include \u003Ciostream>\n#include \u003Cstring>\n#include \u003Cvector>\n\nint main()\n{\n    \u002F\u002F 程序从 main 函数开始执行，下面的语句会按顺序运行。\n    \u002F\u002F std::function 可以保存普通函数、lambda 或函数对象。\n    \u002F\u002F vector 是动态数组，元素数量可以在运行时变化。\n    std::vector\u003Cstd::function\u003Cvoid()>> callbacks;\n\n    {\n        std::string name = \"Alice\";\n        int score = 95;\n\n        auto print_now = [&name, &score]() {\n            std::cout \u003C\u003C \"now: \" \u003C\u003C name \u003C\u003C \" \" \u003C\u003C score \u003C\u003C \"\\n\";\n        };\n        print_now();\n\n        callbacks.push_back([name, score]() {\n            std::cout \u003C\u003C \"saved: \" \u003C\u003C name \u003C\u003C \" \" \u003C\u003C score \u003C\u003C \"\\n\";\n        });\n    }\n\n    for (const auto& callback : callbacks)\n    {\n        callback();\n    }\n\n    return 0;\n}\n",[32,2375,2376,2383,2389,2395,2401,2405,2413,2417,2421,2426,2430,2454,2458,2462,2476,2490,2494,2520,2554,2559,2566,2570,2589,2622,2627,2631,2635,2648,2652,2659,2663,2667,2675],{"__ignoreMap":136},[140,2377,2378,2380],{"class":142,"line":143},[140,2379,542],{"class":224},[140,2381,2382],{"class":160}," \u003Cfunctional>\n",[140,2384,2385,2387],{"class":142,"line":150},[140,2386,542],{"class":224},[140,2388,552],{"class":160},[140,2390,2391,2393],{"class":142,"line":167},[140,2392,542],{"class":224},[140,2394,1091],{"class":160},[140,2396,2397,2399],{"class":142,"line":180},[140,2398,542],{"class":224},[140,2400,559],{"class":160},[140,2402,2403],{"class":142,"line":191},[140,2404,565],{"emptyLinePlaceholder":564},[140,2406,2407,2409,2411],{"class":142,"line":590},[140,2408,580],{"class":224},[140,2410,722],{"class":573},[140,2412,725],{"class":146},[140,2414,2415],{"class":142,"line":595},[140,2416,147],{"class":146},[140,2418,2419],{"class":142,"line":619},[140,2420,736],{"class":256},[140,2422,2423],{"class":142,"line":624},[140,2424,2425],{"class":256},"    \u002F\u002F std::function 可以保存普通函数、lambda 或函数对象。\n",[140,2427,2428],{"class":142,"line":629},[140,2429,742],{"class":256},[140,2431,2432,2434,2436,2438,2440,2443,2446,2448,2451],{"class":142,"line":638},[140,2433,748],{"class":573},[140,2435,751],{"class":146},[140,2437,1935],{"class":224},[140,2439,1938],{"class":573},[140,2441,2442],{"class":146},"::function",[140,2444,2445],{"class":224},"\u003Cvoid",[140,2447,666],{"class":146},[140,2449,2450],{"class":224},">>",[140,2452,2453],{"class":146}," callbacks;\n",[140,2455,2456],{"class":142,"line":643},[140,2457,565],{"emptyLinePlaceholder":564},[140,2459,2460],{"class":142,"line":652},[140,2461,684],{"class":146},[140,2463,2464,2466,2469,2471,2474],{"class":142,"line":657},[140,2465,2143],{"class":573},[140,2467,2468],{"class":146},"::string name ",[140,2470,225],{"class":224},[140,2472,2473],{"class":160}," \"Alice\"",[140,2475,616],{"class":146},[140,2477,2478,2481,2483,2485,2488],{"class":142,"line":681},[140,2479,2480],{"class":224},"        int",[140,2482,1415],{"class":146},[140,2484,225],{"class":224},[140,2486,2487],{"class":153}," 95",[140,2489,616],{"class":146},[140,2491,2492],{"class":142,"line":687},[140,2493,565],{"emptyLinePlaceholder":564},[140,2495,2496,2499,2502,2504,2506,2508,2511,2513,2515,2517],{"class":142,"line":700},[140,2497,2498],{"class":224},"        auto",[140,2500,2501],{"class":146}," print_now ",[140,2503,225],{"class":224},[140,2505,1438],{"class":146},[140,2507,1483],{"class":224},[140,2509,2510],{"class":583},"name",[140,2512,768],{"class":146},[140,2514,1483],{"class":224},[140,2516,1441],{"class":583},[140,2518,2519],{"class":146},"]() {\n",[140,2521,2522,2525,2527,2529,2532,2534,2536,2538,2540,2542,2544,2546,2548,2550,2552],{"class":142,"line":706},[140,2523,2524],{"class":573},"            std",[140,2526,839],{"class":146},[140,2528,842],{"class":224},[140,2530,2531],{"class":160}," \"now: \"",[140,2533,848],{"class":224},[140,2535,2150],{"class":146},[140,2537,842],{"class":224},[140,2539,2155],{"class":160},[140,2541,848],{"class":224},[140,2543,1415],{"class":146},[140,2545,842],{"class":224},[140,2547,855],{"class":160},[140,2549,858],{"class":153},[140,2551,861],{"class":160},[140,2553,616],{"class":146},[140,2555,2556],{"class":142,"line":712},[140,2557,2558],{"class":146},"        };\n",[140,2560,2561,2564],{"class":142,"line":717},[140,2562,2563],{"class":573},"        print_now",[140,2565,2096],{"class":146},[140,2567,2568],{"class":142,"line":728},[140,2569,565],{"emptyLinePlaceholder":564},[140,2571,2572,2575,2578,2581,2583,2585,2587],{"class":142,"line":733},[140,2573,2574],{"class":146},"        callbacks.",[140,2576,2577],{"class":573},"push_back",[140,2579,2580],{"class":146},"([",[140,2582,2510],{"class":583},[140,2584,768],{"class":146},[140,2586,1441],{"class":583},[140,2588,2519],{"class":146},[140,2590,2591,2593,2595,2597,2600,2602,2604,2606,2608,2610,2612,2614,2616,2618,2620],{"class":142,"line":739},[140,2592,2524],{"class":573},[140,2594,839],{"class":146},[140,2596,842],{"class":224},[140,2598,2599],{"class":160}," \"saved: \"",[140,2601,848],{"class":224},[140,2603,2150],{"class":146},[140,2605,842],{"class":224},[140,2607,2155],{"class":160},[140,2609,848],{"class":224},[140,2611,1415],{"class":146},[140,2613,842],{"class":224},[140,2615,855],{"class":160},[140,2617,858],{"class":153},[140,2619,861],{"class":160},[140,2621,616],{"class":146},[140,2623,2624],{"class":142,"line":745},[140,2625,2626],{"class":146},"        });\n",[140,2628,2629],{"class":142,"line":795},[140,2630,703],{"class":146},[140,2632,2633],{"class":142,"line":800},[140,2634,565],{"emptyLinePlaceholder":564},[140,2636,2637,2639,2641,2643,2645],{"class":142,"line":834},[140,2638,2123],{"class":224},[140,2640,2126],{"class":146},[140,2642,2003],{"class":224},[140,2644,2131],{"class":224},[140,2646,2647],{"class":146}," callback : callbacks)\n",[140,2649,2650],{"class":142,"line":866},[140,2651,684],{"class":146},[140,2653,2654,2657],{"class":142,"line":871},[140,2655,2656],{"class":573},"        callback",[140,2658,2096],{"class":146},[140,2660,2661],{"class":142,"line":903},[140,2662,703],{"class":146},[140,2664,2665],{"class":142,"line":929},[140,2666,565],{"emptyLinePlaceholder":564},[140,2668,2669,2671,2673],{"class":142,"line":934},[140,2670,598],{"class":224},[140,2672,613],{"class":153},[140,2674,616],{"class":146},[140,2676,2677],{"class":142,"line":949},[140,2678,194],{"class":146},[15,2680,2681,1061],{},[105,2682,1060],{},[131,2684,2687],{"className":2685,"code":2686,"language":1067,"meta":136},[1065],"now: Alice 95\nsaved: Alice 95\n",[32,2688,2686],{"__ignoreMap":136},[15,2690,2691,2692,2695,2696,2698,2699,2701],{},"This is called immediately, so capture by reference is fine. The lambda saved to ",[32,2693,2694],{},"callbacks"," uses capture by value, because ",[32,2697,2510],{}," and ",[32,2700,1441],{}," are already destroyed after leaving the inner scope.",[10,2703,2705],{"id":2704},"key-grammar-explanation","Key Grammar Explanation",[15,2707,2708],{},"|Here is the translation of the provided Simplified Chinese Markdown fragment into natural American English, following all specified rules.",[2710,2711],"hr",{},[50,2713,2714,2729],{},[53,2715,2716],{},[56,2717,2718,2723,2726],{},[59,2719,2720],{"align":61},[105,2721,2722],{},"Example",[59,2724,2725],{"align":61},"Key points",[59,2727,2728],{"align":61},"Explanation",[70,2730,2731,2742,2753,2768,2780,2798],{},[56,2732,2733,2736,2739],{},[75,2734,2735],{"align":61},"Example 1",[75,2737,2738],{"align":61},"Comparison of old callback writing methods",[75,2740,2741],{"align":61},"Regular functions and function objects can both serve as callbacks, but lambda is better suited for short local logic.",[56,2743,2744,2747,2750],{},[75,2745,2746],{"align":61},"Example 2",[75,2748,2749],{"align":61},"Parameters and return values",[75,2751,2752],{"align":61},"The return type is usually inferred, but you need to explicitly specify it when different branches return different types.",[56,2754,2755,2758,2760],{},[75,2756,2757],{"align":61},"Example 3",[75,2759,77],{"align":61},[75,2761,2762,2764,2765,2767],{"align":61},[32,2763,432],{}," copy, ",[32,2766,448],{}," reference",[56,2769,2770,2773,2777],{},[75,2771,2772],{"align":61},"Example 4",[75,2774,2775],{"align":61},[32,2776,1663],{},[75,2778,2779],{"align":61},"Modifying the internal copy of the lambda does not affect the external variable.",[56,2781,2782,2785,2788],{},[75,2783,2784],{"align":61},"Example 5",[75,2786,2787],{"align":61},"STL algorithms",[75,2789,2790,768,2792,2794,2795,2797],{"align":61},[32,2791,1983],{},[32,2793,2211],{},", and ",[32,2796,816],{}," often work with lambda.",[56,2799,2800,2803,2806],{},[75,2801,2802],{"align":61},"Example 6",[75,2804,2805],{"align":61},"lifecycle",[75,2807,2808],{"align":61},"In save callbacks, asynchronous callbacks, and thread callbacks, do not arbitrarily reference captured local variables.",[10,2810,2812],{"id":2811},"common-errors","Common Errors",[19,2814,2815,2821,2824,2829,2837],{},[22,2816,2817,2818,2820],{},"When using default reference capture in callbacks ",[32,2819,488],{},", local variables are still accessed after they are destroyed.",[22,2822,2823],{},"It's thought that by-value captures follow external variable changes. By-value captures save a copy at the time the lambda is defined.",[22,2825,2826,2827,35],{},"Intending to modify the copy captured by value, but forgot to add ",[32,2828,1663],{},[22,2830,2831,2832,2834,2835,35],{},"Using a lambda with captures as a function pointer. Lambdas with captures need to be stored using template parameters, ",[32,2833,374],{}," variables, or ",[32,2836,391],{},[22,2838,2839,2840,2843,2844,35],{},"Capturing ",[32,2841,2842],{},"this"," in an asynchronous scenario, the object is destroyed first. Need to ensure the object's lifetime, or use more explicit methods such as smart pointers and ",[32,2845,384],{},[10,2847,2848],{"id":2848},"使用建议",[109,2850,2851,2854,2857,2860,2863],{},[22,2852,2853],{},"明确目标：在开始前确定您的具体需求，以便选择最合适的工具或教程。",[22,2855,2856],{},"充分利用资源：参考官方文档、教程和博客，这些资料能帮助您快速上手并解决问题。",[22,2858,2859],{},"实践应用：通过动手操作项目或编写代码来巩固学习成果，提升实际操作能力。",[22,2861,2862],{},"问题解决：遇到困难时，查阅参考资料或寻求社区支持，逐步培养独立解决问题的能力。",[22,2864,2865],{},"分享经验：完成项目后，可以撰写文章或博客分享心得，帮助其他学习者。",[15,2867,2868],{},"如果需要针对特定领域（如单片机、机器人或环境搭建）的进一步建议，请提供更多信息，我将为您细化内容。",[19,2870,2871,2874,2885,2888,2891],{},[22,2872,2873],{},"For small, localized logic, prefer lambda.",[22,2875,2876,2877,2879,2880,2698,2882,2884],{},"Try to write capture lists explicitly using ",[32,2878,82],{},", and avoid relying on defaults ",[32,2881,475],{},[32,2883,488],{}," as much as possible.",[22,2886,2887],{},"Prioritize capturing necessary data by value in callbacks, threads, timers, and asynchronous operations.",[22,2889,2890],{},"For callbacks that are called only once and don't need to be saved, you can pass a lambda directly to the algorithm or function template.",[22,2892,2893,2894,2896],{},"When you need to uniformly save different lambdas, use the ",[32,2895,391],{}," from the next section.",[10,2898,2900],{"id":2899},"summary","Summary",[109,2902,2903,2909,2912,2920,2925,2928],{},[22,2904,2905,2906,35],{},"Lambdas are anonymous callable objects, written as ",[32,2907,2908],{},"[捕获](参数) { 函数体 }",[22,2910,2911],{},"The capture list determines how the lambda uses external variables.",[22,2913,2914,2916,2917,2919],{},[32,2915,432],{}," is capture by value, and ",[32,2918,448],{}," is capture by reference.",[22,2921,2922,2924],{},[32,2923,1663],{}," allows modification of the internal copy of values captured by value.",[22,2926,2927],{},"Lambdas are most commonly used in STL algorithms, callbacks, and asynchronous tasks.",[22,2929,2930],{},"The lifecycle is the most error-prone aspect of Lambda, especially when dealing with saved callbacks and async callbacks.",[2932,2933,2934],"style",{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":136,"searchDepth":150,"depth":150,"links":2936},[2937,2938,2949,2950,2951,2959,2960,2961,2962],{"id":12,"depth":150,"text":13},{"id":41,"depth":150,"text":42,"children":2939},[2940,2942,2944,2946,2948],{"id":102,"depth":167,"text":2941},"1. AWS Lambda (or similar serverless platforms)",{"id":197,"depth":167,"text":2943},"2. General Programming (e.g., Python, JavaScript)",{"id":260,"depth":167,"text":2945},"3. Cloud Functions (e.g., Google Cloud Functions, Azure Functions)",{"id":284,"depth":167,"text":2947},"4. Custom\u002FIn-house Systems",{"id":320,"depth":167,"text":321},{"id":362,"depth":150,"text":363},{"id":395,"depth":150,"text":396},{"id":522,"depth":150,"text":523,"children":2952},[2953,2954,2955,2956,2957,2958],{"id":526,"depth":167,"text":527},{"id":1072,"depth":167,"text":1073},{"id":1373,"depth":167,"text":1374},{"id":1656,"depth":167,"text":1657},{"id":1869,"depth":167,"text":1870},{"id":2366,"depth":167,"text":2367},{"id":2704,"depth":150,"text":2705},{"id":2811,"depth":150,"text":2812},{"id":2848,"depth":150,"text":2848},{"id":2899,"depth":150,"text":2900},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1100-lambda-biao-da-shi","2000-1100","2023-10-05","wiki\u002F2023-10-05-cplusplus-jiao-xue","en-us:2023-10-05-cplusplus-jiao-xue","\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue","Cplusplus教学","md","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1100-Lambda表达式",false,null,"en-US","en-us",{},{"title":5,"description":136},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1100-lambda-biao-da-shi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1100-Lambda表达式","PikHq9fseU-acOplr_GtHRZWGXYhhw7jiIjOXSYW1f0",[2982,2988,2993,2998,3003,3008,3013,3018,3023,3028,3033,3038,3043,3048,3053,3058,3063,3068,3073,3078,3083,3088,3093,3098,3103,3108,3113,3118,3123,3128,3133,3138,3143,3148,3153,3158,3163,3168,3172,3177,3182,3187,3192,3197,3201,3206,3211,3216,3217,3221,3226,3231,3236,3241,3246,3251,3256,3261,3266,3271,3276,3281,3286,3291,3296,3301,3306,3311,3316,3321,3326,3331,3336,3341,3346,3351,3356,3361,3366,3371,3376,3381],{"path":2983,"stem":2984,"title":2985,"date":2965,"chapterOrder":2986,"chapterDepth":2987,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0100-c-kai-fa-huan-jing-da-jian-yu-ce-shi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0100-C++开发环境搭建与测试","C++ Development Environment Setup and Testing","0100",0,{"path":2989,"stem":2990,"title":2991,"date":2965,"chapterOrder":2992,"chapterDepth":2987,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0200-c-ji-chu-chu-shi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0200-C++基础初识","C++ Basics","0200",{"path":2994,"stem":2995,"title":2996,"date":2965,"chapterOrder":2997,"chapterDepth":2987,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0300-shu-ju-lei-xing-yu-shu-ju-cun-fang","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0300-数据类型与数据存放","Data Types and Data Storage","0300",{"path":2999,"stem":3000,"title":3001,"date":2965,"chapterOrder":3002,"chapterDepth":2987,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0400-shu-ru-shu-chu","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0400-输入输出","Input and Output","0400",{"path":3004,"stem":3005,"title":3006,"date":2965,"chapterOrder":3007,"chapterDepth":2987,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0500-yun-suan-fu","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0500-运算符","operator","0500",{"path":3009,"stem":3010,"title":3011,"date":2965,"chapterOrder":3012,"chapterDepth":2987,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0600-cheng-xu-liu-cheng-jie-gou","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0600-程序流程结构","program flow structure","0600",{"path":3014,"stem":3015,"title":3016,"date":2965,"chapterOrder":3017,"chapterDepth":2987,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0700-shu-zu","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0700-数组","array","0700",{"path":3019,"stem":3020,"title":3021,"date":2965,"chapterOrder":3022,"chapterDepth":2987,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0800-han-shu-yu-tou-wen-jian","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0800-函数与头文件","Functions and Header Files","0800",{"path":3024,"stem":3025,"title":3026,"date":2965,"chapterOrder":3027,"chapterDepth":2987,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0900-zhi-zhen","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0900-指针","pointer","0900",{"path":3029,"stem":3030,"title":3031,"date":2965,"chapterOrder":3032,"chapterDepth":2987,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1000-jie-gou-ti-yu-gong-yong-ti","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1000-结构体与共用体","Structures and Unions","1000",{"path":3034,"stem":3035,"title":3036,"date":2965,"chapterOrder":3037,"chapterDepth":2987,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1100-nei-cun-fen-qu-yu-sheng-ming-zhou-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1100-内存分区与生命周期","Memory Partitioning and Lifecycle","1100",{"path":3039,"stem":3040,"title":3041,"date":2965,"chapterOrder":3042,"chapterDepth":2987,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1200-yin-yong","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1200-引用","reference","1200",{"path":3044,"stem":3045,"title":3046,"date":2965,"chapterOrder":3047,"chapterDepth":2987,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1300-han-shu-ti-gao-yu-ming-ming-kong-jian","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1300-函数提高与命名空间","Advanced Functions and Namespaces","1300",{"path":3049,"stem":3050,"title":3051,"date":2965,"chapterOrder":3052,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0100-feng-zhuang","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0100-封装","encapsulation","1400-0100",{"path":3054,"stem":3055,"title":3056,"date":2965,"chapterOrder":3057,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0200-dui-xiang-chu-shi-hua-he-qing-li","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0200-对象初始化和清理","Object initialization and cleanup","1400-0200",{"path":3059,"stem":3060,"title":3061,"date":2965,"chapterOrder":3062,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0300-dui-xiang-mo-xing-yu-this-zhi-zhen","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0300-对象模型与this指针","Object Model and the `this` Pointer","1400-0300",{"path":3064,"stem":3065,"title":3066,"date":2965,"chapterOrder":3067,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0400-you-yuan-yu-yun-suan-fu-zhong-zai","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0400-友元与运算符重载","Friends and operator overloading","1400-0400",{"path":3069,"stem":3070,"title":3071,"date":2965,"chapterOrder":3072,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0500-ji-cheng","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0500-继承","inheritance","1400-0500",{"path":3074,"stem":3075,"title":3076,"date":2965,"chapterOrder":3077,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0600-duo-tai","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0600-多态","polymorphism","1400-0600",{"path":3079,"stem":3080,"title":3081,"date":2965,"chapterOrder":3082,"chapterDepth":2987,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-lei-he-dui-xiang","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-类和对象","Classes and Objects","1400",{"path":3084,"stem":3085,"title":3086,"date":2965,"chapterOrder":3087,"chapterDepth":2987,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1500-wen-jian-cao-zuo","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1500-文件操作","File operations","1500",{"path":3089,"stem":3090,"title":3091,"date":2965,"chapterOrder":3092,"chapterDepth":2987,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1600-yi-chang-chu-li-yu-cuo-wu-ma","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1600-异常处理与错误码","异常处理","1600",{"path":3094,"stem":3095,"title":3096,"date":2965,"chapterOrder":3097,"chapterDepth":2987,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1700-mu-ban","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1700-模板","template","1700",{"path":3099,"stem":3100,"title":3101,"date":2965,"chapterOrder":3102,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0100-stl-chu-shi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0100-STL初识","Introduction to STL","1800-0100",{"path":3104,"stem":3105,"title":3106,"date":2965,"chapterOrder":3107,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0200-std-array","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0200-std-array","std::array","1800-0200",{"path":3109,"stem":3110,"title":3111,"date":2965,"chapterOrder":3112,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0300-string-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0300-string容器","string container","1800-0300",{"path":3114,"stem":3115,"title":3116,"date":2965,"chapterOrder":3117,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0400-vector-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0400-vector容器","vector 容器","1800-0400",{"path":3119,"stem":3120,"title":3121,"date":2965,"chapterOrder":3122,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0500-deque-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0500-deque容器","deque 容器","1800-0500",{"path":3124,"stem":3125,"title":3126,"date":2965,"chapterOrder":3127,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0600-stack-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0600-stack容器","stack 容器","1800-0600",{"path":3129,"stem":3130,"title":3131,"date":2965,"chapterOrder":3132,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0700-queue-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0700-queue容器","queue container","1800-0700",{"path":3134,"stem":3135,"title":3136,"date":2965,"chapterOrder":3137,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0800-list-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0800-list容器","list 容器","1800-0800",{"path":3139,"stem":3140,"title":3141,"date":2965,"chapterOrder":3142,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0900-set-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0900-set容器","set \u002F multiset 容器","1800-0900",{"path":3144,"stem":3145,"title":3146,"date":2965,"chapterOrder":3147,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1000-map-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-1000-map容器","map \u002F multimap 容器","1800-1000",{"path":3149,"stem":3150,"title":3151,"date":2965,"chapterOrder":3152,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1100-han-shu-dui-xiang-yu-wei-ci","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-1100-函数对象与谓词","Function objects and predicates","1800-1100",{"path":3154,"stem":3155,"title":3156,"date":2965,"chapterOrder":3157,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1200-chang-yong-suan-fa","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-1200-常用算法","Common algorithms","1800-1200",{"path":3159,"stem":3160,"title":3161,"date":2965,"chapterOrder":3162,"chapterDepth":2987,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-stl-ti-gao-bian-cheng","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-STL提高编程","Level up your programming with STL.","1800",{"path":3164,"stem":3165,"title":3166,"date":2965,"chapterOrder":3167,"chapterDepth":2987,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1900-c-lei-xing-zhuan-huan","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1900-C++类型转换","C++ Type Casting","1900",{"path":3169,"stem":3170,"title":374,"date":2965,"chapterOrder":3171,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0100-auto","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0100-auto","2000-0100",{"path":3173,"stem":3174,"title":3175,"date":2965,"chapterOrder":3176,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0200-nullptr","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0200-nullptr","nullptr","2000-0200",{"path":3178,"stem":3179,"title":3180,"date":2965,"chapterOrder":3181,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0300-using","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0300-using","using","2000-0300",{"path":3183,"stem":3184,"title":3185,"date":2965,"chapterOrder":3186,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0400-enum-class","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0400-enum-class","enum class","2000-0400",{"path":3188,"stem":3189,"title":3190,"date":2965,"chapterOrder":3191,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0500-fan-wei-for-xun-huan","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0500-范围for循环","range-based for loop","2000-0500",{"path":3193,"stem":3194,"title":3195,"date":2965,"chapterOrder":3196,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0600-jie-gou-hua-bang-ding","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0600-结构化绑定","structured binding","2000-0600",{"path":3198,"stem":3199,"title":380,"date":2965,"chapterOrder":3200,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0700-constexpr","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0700-constexpr","2000-0700",{"path":3202,"stem":3203,"title":3204,"date":2965,"chapterOrder":3205,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0800-raii","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0800-RAII","RAII","2000-0800",{"path":3207,"stem":3208,"title":3209,"date":2965,"chapterOrder":3210,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0900-zhi-neng-zhi-zhen","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0900-智能指针","Smart pointer","2000-0900",{"path":3212,"stem":3213,"title":3214,"date":2965,"chapterOrder":3215,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1000-you-zhi-yin-yong-he-yi-dong-yu-yi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1000-右值引用和移动语义","Rvalue references and move semantics","2000-1000",{"path":2963,"stem":2979,"title":5,"date":2965,"chapterOrder":2964,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},{"path":3218,"stem":3219,"title":391,"date":2965,"chapterOrder":3220,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1200-std-function","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1200-std-function","2000-1200",{"path":3222,"stem":3223,"title":3224,"date":2965,"chapterOrder":3225,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1300-std-bind","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1300-std-bind","std::bind","2000-1300",{"path":3227,"stem":3228,"title":3229,"date":2965,"chapterOrder":3230,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1400-std-optional","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1400-std-optional","std::optional","2000-1400",{"path":3232,"stem":3233,"title":3234,"date":2965,"chapterOrder":3235,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1500-std-variant","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1500-std-variant","std::variant","2000-1500",{"path":3237,"stem":3238,"title":3239,"date":2965,"chapterOrder":3240,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1600-std-span","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1600-std-span","std::span","2000-1600",{"path":3242,"stem":3243,"title":3244,"date":2965,"chapterOrder":3245,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1700-std-format-print","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1700-std-format-print","std::format \u002F std::print","2000-1700",{"path":3247,"stem":3248,"title":3249,"date":2965,"chapterOrder":3250,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1800-std-chrono","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1800-std-chrono","std::chrono","2000-1800",{"path":3252,"stem":3253,"title":3254,"date":2965,"chapterOrder":3255,"chapterDepth":150,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0100-std-thread","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0100-std-thread","std::thread and join","2000-1900-0100",{"path":3257,"stem":3258,"title":3259,"date":2965,"chapterOrder":3260,"chapterDepth":150,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0200-mutex-lock-guard","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0200-mutex-lock-guard","mutex 与 lock_guard","2000-1900-0200",{"path":3262,"stem":3263,"title":3264,"date":2965,"chapterOrder":3265,"chapterDepth":150,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0300-std-atomic","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0300-std-atomic","std::atomic","2000-1900-0300",{"path":3267,"stem":3268,"title":3269,"date":2965,"chapterOrder":3270,"chapterDepth":150,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0400-condition-variable","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0400-condition-variable","condition_variable","2000-1900-0400",{"path":3272,"stem":3273,"title":3274,"date":2965,"chapterOrder":3275,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-bing-fa-bian-cheng","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-并发编程","Concurrent programming","2000-1900",{"path":3277,"stem":3278,"title":3279,"date":2965,"chapterOrder":3280,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2000-std-filesystem","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-2000-std-filesystem","std::filesystem","2000-2000",{"path":3282,"stem":3283,"title":3284,"date":2965,"chapterOrder":3285,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2100-modules-jian-jie","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-2100-modules简介","Modules Introduction","2000-2100",{"path":3287,"stem":3288,"title":3289,"date":2965,"chapterOrder":3290,"chapterDepth":2987,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-xian-dai-c","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-现代C++","Modern C++","2000",{"path":3292,"stem":3293,"title":3294,"date":2965,"chapterOrder":3295,"chapterDepth":150,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0100-ding-shi-qi-yu-yi-bu-io","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0100-定时器与异步IO","Timers and Asynchronous I\u002FO","2100-0100-0100",{"path":3297,"stem":3298,"title":3299,"date":2965,"chapterOrder":3300,"chapterDepth":150,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0200-boost-asio-ji-chu","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0200-Boost.Asio基础","Boost.Asio Basics","2100-0100-0200",{"path":3302,"stem":3303,"title":3304,"date":2965,"chapterOrder":3305,"chapterDepth":150,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0300-chuan-kou-tong-xin","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0300-串口通信","serial communication","2100-0100-0300",{"path":3307,"stem":3308,"title":3309,"date":2965,"chapterOrder":3310,"chapterDepth":150,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0400-tcp-tong-xin","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0400-TCP通信","TCP communication","2100-0100-0400",{"path":3312,"stem":3313,"title":3314,"date":2965,"chapterOrder":3315,"chapterDepth":150,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0500-udp-tong-xin","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0500-UDP通信","UDP communication","2100-0100-0500",{"path":3317,"stem":3318,"title":3319,"date":2965,"chapterOrder":3320,"chapterDepth":150,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0600-ji-qi-ren-gong-cheng-xie-fa-yu-ros2-ji-cheng","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0600-机器人工程写法与ROS2集成","Robot Engineering Approach and ROS2 Integration","2100-0100-0600",{"path":3322,"stem":3323,"title":3324,"date":2965,"chapterOrder":3325,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-boost-asio-yi-bu-io-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-Boost.Asio异步IO库","Boost.Asio asynchronous IO library","2100-0100",{"path":3327,"stem":3328,"title":3329,"date":2965,"chapterOrder":3330,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0200-eigen-xian-xing-dai-shu-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0200-Eigen线性代数库","Eigen linear algebra library","2100-0200",{"path":3332,"stem":3333,"title":3334,"date":2965,"chapterOrder":3335,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0300-opencv-ji-suan-ji-shi-jue-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0300-OpenCV计算机视觉库","OpenCV Computer Vision Library","2100-0300",{"path":3337,"stem":3338,"title":3339,"date":2965,"chapterOrder":3340,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0400-pcl-dian-yun-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0400-PCL点云库","PCL Point Cloud Library","2100-0400",{"path":3342,"stem":3343,"title":3344,"date":2965,"chapterOrder":3345,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0500-sophus-li-qun-li-dai-shu-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0500-Sophus李群李代数库","Sophus Lie group and Lie algebra library","2100-0500",{"path":3347,"stem":3348,"title":3349,"date":2965,"chapterOrder":3350,"chapterDepth":2987,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-chang-yong-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-常用库","Learning Common Libraries","2100",{"path":3352,"stem":3353,"title":3354,"date":2965,"chapterOrder":3355,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0100-cmakepresets-yu-gou-jian-an-zhuang","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0100-CMakePresets与构建安装","CMakePresets and Build Installation","2200-0100",{"path":3357,"stem":3358,"title":3359,"date":2965,"chapterOrder":3360,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0200-ding-ceng-cmake-yu-gong-gong-bian-yi-xuan-xiang","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0200-顶层CMake与公共编译选项","Top-level CMake and Public Compilation Options","2200-0200",{"path":3362,"stem":3363,"title":3364,"date":2965,"chapterOrder":3365,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0300-src-yu-lib-mo-kuai-cmake-xiang-jie","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0300-src与lib模块CMake详解","Detailed CMake Explanation for src and lib Modules","2200-0300",{"path":3367,"stem":3368,"title":3369,"date":2965,"chapterOrder":3370,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0400-di-san-fang-ku-yi-lai-xie-fa","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0400-第三方库依赖写法","How to write third-party library dependencies","2200-0400",{"path":3372,"stem":3373,"title":3374,"date":2965,"chapterOrder":3375,"chapterDepth":143,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0500-mu-ban-kuo-zhan-yu-chang-jian-wen-ti","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0500-模板扩展与常见问题","Template Extensions and FAQ","2200-0500",{"path":3377,"stem":3378,"title":3379,"date":2965,"chapterOrder":3380,"chapterDepth":2987,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":2972},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-cmake-gong-cheng-mu-ban","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-CMake工程模板","CMake Project Template","2200",{"path":2968,"stem":3382,"title":3383,"date":2965,"chapterOrder":2973,"chapterDepth":2987,"docKey":2967,"docRoot":2968,"docTitle":2969,"isWikiDoc":564,"isWikiIndex":564},"_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002Findex","C\u002FC++ tutorial",{"variants":3385},[3386,3387,3390,3393,3396],{"path":2963,"localeSlug":2975,"i18nKey":2971},{"path":3388,"localeSlug":3389,"i18nKey":2971},"\u002Fzh-hant\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1100-lambda-biao-da-shi","zh-hant",{"path":3391,"localeSlug":3392,"i18nKey":2971},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1100-lambda-biao-da-shi","zh-hk",{"path":3394,"localeSlug":3395,"i18nKey":2971},"\u002Fzh-tw\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1100-lambda-biao-da-shi","zh-tw",{"path":3397,"localeSlug":3398,"i18nKey":2971},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1100-lambda-biao-da-shi","zh-cn",[2963,2978,3388,2978,3391,2978,3394,2978,3397,2978],1784646868147]