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