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