[{"data":1,"prerenderedAt":3498},["ShallowReactive",2],{"wiki-page-\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1300-std-bind":3,"wiki-doc-items-\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1300-std-bind":3067,"language-switcher-data-\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1300-std-bind":3482,"wiki-i18n-paths-\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1300-std-bind":3497},{"id":4,"title":5,"body":6,"canonicalPath":3049,"chapterDepth":170,"chapterOrder":3050,"date":3051,"description":163,"docI18nKey":3052,"docKey":3053,"docRoot":3054,"docTitle":3055,"extension":3056,"i18nKey":3057,"isBlogPost":3058,"isWikiDoc":200,"isWikiIndex":3058,"layout":3059,"legacyPath":3059,"locale":3060,"localeSlug":3061,"meta":3062,"navigation":200,"path":3049,"seo":3063,"sourcePath":3064,"sourceStem":3057,"stem":3065,"wikiDepth":170,"__hash__":3066},"content\u002F_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1300-std-bind.md","std::bind",{"type":7,"value":8,"toc":3031},"minimark",[9,13,17,30,36,46,49,65,78,149,152,157,528,535,543,547,550,817,821,827,831,837,1212,1216,1222,1237,1241,1244,1683,1687,1693,1697,1710,1982,1986,1992,2000,2015,2351,2355,2361,2364,2396,2399,2454,2466,2469,2495,2504,2529,2532,2559,2575,2578,2598,2601,2626,2632,2653,2656,2681,2687,2698,2701,2729,2741,2750,2753,2853,2857,2917,2922,2925,2955,2958,2985,2988,3027],[10,11,12],"h2",{"id":12},"本節解決什麼問題",[14,15,16],"p",{},"有時你已經有一個函數，但它的參數和目標接口不匹配：",[18,19,20,24,27],"ul",{},[21,22,23],"li",{},"想提前固定某些參數。",[21,25,26],{},"想調整參數順序。",[21,28,29],{},"想把成員函數綁定到某個對象上，變成普通回調。",[14,31,32,35],{},[33,34,5],"code",{}," 可以把已有可調用對象適配成新的可調用對象。",[14,37,38,39,42,43,45],{},"現代 C++ 中，很多 ",[33,40,41],{},"bind"," 場景可以用 Lambda 寫得更清楚。不過 ",[33,44,5],{}," 在舊項目、ROS2 示例、Boost.Asio 回調、成員函數適配中仍然經常出現，值得掌握。",[10,47,48],{"id":48},"這個特性是什麼",[14,50,51,53,54,57,58,57,61,64],{},[33,52,5],{}," 接收一個可調用對象和一組綁定參數，返回一個新的可調用對象。調用新對象時，佔位符 ",[33,55,56],{},"_1","、",[33,59,60],{},"_2",[33,62,63],{},"_3"," 表示\"調用時傳進來的第 1、2、3 個參數\"。",[14,66,67,69,70,73,74,77],{},[33,68,5],{}," 需要頭文件 ",[33,71,72],{},"\u003Cfunctional>","，佔位符在命名空間 ",[33,75,76],{},"std::placeholders"," 中。",[79,80,81,95],"table",{},[82,83,84],"thead",{},[85,86,87,92],"tr",{},[88,89,91],"th",{"align":90},"left","寫法",[88,93,94],{"align":90},"含義",[96,97,98,116,126,139],"tbody",{},[85,99,100,106],{},[101,102,103],"td",{"align":90},[33,104,105],{},"std::bind(f, 10, _1)",[101,107,108,109,112,113],{"align":90},"固定 ",[33,110,111],{},"f"," 的第一個參數為 ",[33,114,115],{},"10",[85,117,118,123],{},[101,119,120],{"align":90},[33,121,122],{},"std::bind(f, _2, _1)",[101,124,125],{"align":90},"調換調用時兩個參數的順序",[85,127,128,133],{},[101,129,130],{"align":90},[33,131,132],{},"std::bind(&C::m, &obj, _1)",[101,134,135,136],{"align":90},"把成員函數綁定到對象 ",[33,137,138],{},"obj",[85,140,141,146],{},[101,142,143],{"align":90},[33,144,145],{},"std::bind(f, std::ref(x), _1)",[101,147,148],{"align":90},"綁定引用，而不是拷貝",[10,150,151],{"id":151},"示例代碼",[153,154,156],"h3",{"id":155},"示例-1固定普通函數的部分參數","示例 1：固定普通函數的部分參數",[158,159,164],"pre",{"className":160,"code":161,"language":162,"meta":163,"style":163},"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","",[33,165,166,179,187,195,202,254,260,311,317,322,333,338,345,361,375,380,404,409,415,442,460,465,494,507,512,523],{"__ignoreMap":163},[167,168,171,175],"span",{"class":169,"line":170},"line",1,[167,172,174],{"class":173},"szBVR","#include",[167,176,178],{"class":177},"sZZnC"," \u003Cfunctional>\n",[167,180,182,184],{"class":169,"line":181},2,[167,183,174],{"class":173},[167,185,186],{"class":177}," \u003Ciostream>\n",[167,188,190,192],{"class":169,"line":189},3,[167,191,174],{"class":173},[167,193,194],{"class":177}," \u003Cstring>\n",[167,196,198],{"class":169,"line":197},4,[167,199,201],{"emptyLinePlaceholder":200},true,"\n",[167,203,205,208,212,216,219,222,225,228,231,235,238,241,244,246,248,251],{"class":169,"line":204},5,[167,206,207],{"class":173},"void",[167,209,211],{"class":210},"sScJk"," print_student",[167,213,215],{"class":214},"sVt8B","(",[167,217,218],{"class":173},"const",[167,220,221],{"class":210}," std",[167,223,224],{"class":214},"::",[167,226,227],{"class":210},"string",[167,229,230],{"class":173},"&",[167,232,234],{"class":233},"s4XuR"," name",[167,236,237],{"class":214},", ",[167,239,240],{"class":173},"int",[167,242,243],{"class":233}," age",[167,245,237],{"class":214},[167,247,240],{"class":173},[167,249,250],{"class":233}," score",[167,252,253],{"class":214},")\n",[167,255,257],{"class":169,"line":256},6,[167,258,259],{"class":214},"{\n",[167,261,263,266,269,272,275,277,280,283,286,288,291,293,296,298,301,305,308],{"class":169,"line":262},7,[167,264,265],{"class":210},"    std",[167,267,268],{"class":214},"::cout ",[167,270,271],{"class":173},"\u003C\u003C",[167,273,274],{"class":214}," name ",[167,276,271],{"class":173},[167,278,279],{"class":177}," \" age=\"",[167,281,282],{"class":173}," \u003C\u003C",[167,284,285],{"class":214}," age ",[167,287,271],{"class":173},[167,289,290],{"class":177}," \" score=\"",[167,292,282],{"class":173},[167,294,295],{"class":214}," score ",[167,297,271],{"class":173},[167,299,300],{"class":177}," \"",[167,302,304],{"class":303},"sj4cs","\\n",[167,306,307],{"class":177},"\"",[167,309,310],{"class":214},";\n",[167,312,314],{"class":169,"line":313},8,[167,315,316],{"class":214},"}\n",[167,318,320],{"class":169,"line":319},9,[167,321,201],{"emptyLinePlaceholder":200},[167,323,325,327,330],{"class":169,"line":324},10,[167,326,240],{"class":173},[167,328,329],{"class":210}," main",[167,331,332],{"class":214},"()\n",[167,334,336],{"class":169,"line":335},11,[167,337,259],{"class":214},[167,339,341],{"class":169,"line":340},12,[167,342,344],{"class":343},"sJ8bj","    \u002F\u002F 程序从 main 函数开始执行，下面的语句会按顺序运行。\n",[167,346,348,351,353,355,358],{"class":169,"line":347},13,[167,349,350],{"class":173},"    using",[167,352,221],{"class":210},[167,354,224],{"class":214},[167,356,357],{"class":210},"placeholders",[167,359,360],{"class":214},"::_1;\n",[167,362,364,366,368,370,372],{"class":169,"line":363},14,[167,365,350],{"class":173},[167,367,221],{"class":210},[167,369,224],{"class":214},[167,371,357],{"class":210},[167,373,374],{"class":214},"::_2;\n",[167,376,378],{"class":169,"line":377},15,[167,379,201],{"emptyLinePlaceholder":200},[167,381,383,386,388,391,393,396,398,401],{"class":169,"line":382},16,[167,384,385],{"class":210},"    print_student",[167,387,215],{"class":214},[167,389,390],{"class":177},"\"Alice\"",[167,392,237],{"class":214},[167,394,395],{"class":303},"20",[167,397,237],{"class":214},[167,399,400],{"class":303},"95",[167,402,403],{"class":214},");\n",[167,405,407],{"class":169,"line":406},17,[167,408,201],{"emptyLinePlaceholder":200},[167,410,412],{"class":169,"line":411},18,[167,413,414],{"class":343},"    \u002F\u002F bind 会把函数和部分参数提前绑定成一个可调用对象。\n",[167,416,418,421,424,427,429,431,433,436,439],{"class":169,"line":417},19,[167,419,420],{"class":173},"    auto",[167,422,423],{"class":214}," print_bob ",[167,425,426],{"class":173},"=",[167,428,221],{"class":210},[167,430,224],{"class":214},[167,432,41],{"class":210},[167,434,435],{"class":214},"(print_student, ",[167,437,438],{"class":177},"\"Bob\"",[167,440,441],{"class":214},", _1, _2);\n",[167,443,445,448,450,453,455,458],{"class":169,"line":444},20,[167,446,447],{"class":210},"    print_bob",[167,449,215],{"class":214},[167,451,452],{"class":303},"21",[167,454,237],{"class":214},[167,456,457],{"class":303},"88",[167,459,403],{"class":214},[167,461,463],{"class":169,"line":462},21,[167,464,201],{"emptyLinePlaceholder":200},[167,466,468,470,473,475,477,479,481,483,486,488,491],{"class":169,"line":467},22,[167,469,420],{"class":173},[167,471,472],{"class":214}," print_charlie_score ",[167,474,426],{"class":173},[167,476,221],{"class":210},[167,478,224],{"class":214},[167,480,41],{"class":210},[167,482,435],{"class":214},[167,484,485],{"class":177},"\"Charlie\"",[167,487,237],{"class":214},[167,489,490],{"class":303},"22",[167,492,493],{"class":214},", _1);\n",[167,495,497,500,502,505],{"class":169,"line":496},23,[167,498,499],{"class":210},"    print_charlie_score",[167,501,215],{"class":214},[167,503,504],{"class":303},"91",[167,506,403],{"class":214},[167,508,510],{"class":169,"line":509},24,[167,511,201],{"emptyLinePlaceholder":200},[167,513,515,518,521],{"class":169,"line":514},25,[167,516,517],{"class":173},"    return",[167,519,520],{"class":303}," 0",[167,522,310],{"class":214},[167,524,526],{"class":169,"line":525},26,[167,527,316],{"class":214},[14,529,530,534],{},[531,532,533],"strong",{},"運行結果","：",[158,536,541],{"className":537,"code":539,"language":540,"meta":163},[538],"language-text","Alice age=20 score=95\nBob age=21 score=88\nCharlie age=22 score=91\n","text",[33,542,539],{"__ignoreMap":163},[153,544,546],{"id":545},"示例-2調整參數順序","示例 2：調整參數順序",[14,548,549],{},"佔位符的位置決定了原函數接收到的參數順序。",[158,551,553],{"className":160,"code":552,"language":162,"meta":163,"style":163},"#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",[33,554,555,561,567,571,594,598,645,649,653,661,665,669,681,693,697,713,717,721,739,754,758,780,791,801,805,813],{"__ignoreMap":163},[167,556,557,559],{"class":169,"line":170},[167,558,174],{"class":173},[167,560,178],{"class":177},[167,562,563,565],{"class":169,"line":181},[167,564,174],{"class":173},[167,566,186],{"class":177},[167,568,569],{"class":169,"line":189},[167,570,201],{"emptyLinePlaceholder":200},[167,572,573,575,578,580,582,585,587,589,592],{"class":169,"line":197},[167,574,207],{"class":173},[167,576,577],{"class":210}," divide",[167,579,215],{"class":214},[167,581,240],{"class":173},[167,583,584],{"class":233}," a",[167,586,237],{"class":214},[167,588,240],{"class":173},[167,590,591],{"class":233}," b",[167,593,253],{"class":214},[167,595,596],{"class":169,"line":204},[167,597,259],{"class":214},[167,599,600,602,604,606,609,611,614,616,619,621,624,626,629,632,635,637,639,641,643],{"class":169,"line":256},[167,601,265],{"class":210},[167,603,268],{"class":214},[167,605,271],{"class":173},[167,607,608],{"class":214}," a ",[167,610,271],{"class":173},[167,612,613],{"class":177}," \" \u002F \"",[167,615,282],{"class":173},[167,617,618],{"class":214}," b ",[167,620,271],{"class":173},[167,622,623],{"class":177}," \" = \"",[167,625,282],{"class":173},[167,627,628],{"class":214}," (a ",[167,630,631],{"class":173},"\u002F",[167,633,634],{"class":214}," b) ",[167,636,271],{"class":173},[167,638,300],{"class":177},[167,640,304],{"class":303},[167,642,307],{"class":177},[167,644,310],{"class":214},[167,646,647],{"class":169,"line":262},[167,648,316],{"class":214},[167,650,651],{"class":169,"line":313},[167,652,201],{"emptyLinePlaceholder":200},[167,654,655,657,659],{"class":169,"line":319},[167,656,240],{"class":173},[167,658,329],{"class":210},[167,660,332],{"class":214},[167,662,663],{"class":169,"line":324},[167,664,259],{"class":214},[167,666,667],{"class":169,"line":335},[167,668,344],{"class":343},[167,670,671,673,675,677,679],{"class":169,"line":340},[167,672,350],{"class":173},[167,674,221],{"class":210},[167,676,224],{"class":214},[167,678,357],{"class":210},[167,680,360],{"class":214},[167,682,683,685,687,689,691],{"class":169,"line":347},[167,684,350],{"class":173},[167,686,221],{"class":210},[167,688,224],{"class":214},[167,690,357],{"class":210},[167,692,374],{"class":214},[167,694,695],{"class":169,"line":363},[167,696,201],{"emptyLinePlaceholder":200},[167,698,699,702,704,706,708,711],{"class":169,"line":377},[167,700,701],{"class":210},"    divide",[167,703,215],{"class":214},[167,705,115],{"class":303},[167,707,237],{"class":214},[167,709,710],{"class":303},"2",[167,712,403],{"class":214},[167,714,715],{"class":169,"line":382},[167,716,201],{"emptyLinePlaceholder":200},[167,718,719],{"class":169,"line":406},[167,720,414],{"class":343},[167,722,723,725,728,730,732,734,736],{"class":169,"line":411},[167,724,420],{"class":173},[167,726,727],{"class":214}," swapped ",[167,729,426],{"class":173},[167,731,221],{"class":210},[167,733,224],{"class":214},[167,735,41],{"class":210},[167,737,738],{"class":214},"(divide, _2, _1);\n",[167,740,741,744,746,748,750,752],{"class":169,"line":417},[167,742,743],{"class":210},"    swapped",[167,745,215],{"class":214},[167,747,710],{"class":303},[167,749,237],{"class":214},[167,751,115],{"class":303},[167,753,403],{"class":214},[167,755,756],{"class":169,"line":444},[167,757,201],{"emptyLinePlaceholder":200},[167,759,760,762,765,767,769,771,773,776,778],{"class":169,"line":462},[167,761,420],{"class":173},[167,763,764],{"class":214}," half ",[167,766,426],{"class":173},[167,768,221],{"class":210},[167,770,224],{"class":214},[167,772,41],{"class":210},[167,774,775],{"class":214},"(divide, _1, ",[167,777,710],{"class":303},[167,779,403],{"class":214},[167,781,782,785,787,789],{"class":169,"line":467},[167,783,784],{"class":210},"    half",[167,786,215],{"class":214},[167,788,115],{"class":303},[167,790,403],{"class":214},[167,792,793,795,797,799],{"class":169,"line":496},[167,794,784],{"class":210},[167,796,215],{"class":214},[167,798,395],{"class":303},[167,800,403],{"class":214},[167,802,803],{"class":169,"line":509},[167,804,201],{"emptyLinePlaceholder":200},[167,806,807,809,811],{"class":169,"line":514},[167,808,517],{"class":173},[167,810,520],{"class":303},[167,812,310],{"class":214},[167,814,815],{"class":169,"line":525},[167,816,316],{"class":214},[14,818,819,534],{},[531,820,533],{},[158,822,825],{"className":823,"code":824,"language":540,"meta":163},[538],"10 \u002F 2 = 5\n10 \u002F 2 = 5\n10 \u002F 2 = 5\n20 \u002F 2 = 10\n",[33,826,824],{"__ignoreMap":163},[153,828,830],{"id":829},"示例-3綁定成員函數","示例 3：綁定成員函數",[14,832,833,834,836],{},"非靜態成員函數需要對象才能調用。",[33,835,5],{}," 的第二個參數通常就是對象指針、對象引用或智能指針。",[158,838,840],{"className":160,"code":839,"language":162,"meta":163,"style":163},"#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",[33,841,842,848,854,860,864,872,876,883,887,892,924,928,964,969,1011,1016,1021,1025,1033,1037,1041,1053,1065,1069,1084,1088,1092,1123,1141,1146,1180,1193,1198,1207],{"__ignoreMap":163},[167,843,844,846],{"class":169,"line":170},[167,845,174],{"class":173},[167,847,178],{"class":177},[167,849,850,852],{"class":169,"line":181},[167,851,174],{"class":173},[167,853,186],{"class":177},[167,855,856,858],{"class":169,"line":189},[167,857,174],{"class":173},[167,859,194],{"class":177},[167,861,862],{"class":169,"line":197},[167,863,201],{"emptyLinePlaceholder":200},[167,865,866,869],{"class":169,"line":204},[167,867,868],{"class":173},"class",[167,870,871],{"class":210}," Printer\n",[167,873,874],{"class":169,"line":256},[167,875,259],{"class":214},[167,877,878,880],{"class":169,"line":262},[167,879,265],{"class":210},[167,881,882],{"class":214},"::string prefix_;\n",[167,884,885],{"class":169,"line":313},[167,886,201],{"emptyLinePlaceholder":200},[167,888,889],{"class":169,"line":319},[167,890,891],{"class":173},"public:\n",[167,893,894,897,900,902,904,906,908,910,912,915,918,921],{"class":169,"line":324},[167,895,896],{"class":173},"    explicit",[167,898,899],{"class":210}," Printer",[167,901,215],{"class":214},[167,903,218],{"class":173},[167,905,221],{"class":210},[167,907,224],{"class":214},[167,909,227],{"class":210},[167,911,230],{"class":173},[167,913,914],{"class":233}," prefix",[167,916,917],{"class":214},") : ",[167,919,920],{"class":210},"prefix_",[167,922,923],{"class":214},"(prefix) {}\n",[167,925,926],{"class":169,"line":335},[167,927,201],{"emptyLinePlaceholder":200},[167,929,930,933,936,938,940,943,945,947,949,951,953,955,958,961],{"class":169,"line":340},[167,931,932],{"class":173},"    void",[167,934,935],{"class":210}," print",[167,937,215],{"class":214},[167,939,240],{"class":173},[167,941,942],{"class":233}," id",[167,944,237],{"class":214},[167,946,218],{"class":173},[167,948,221],{"class":210},[167,950,224],{"class":214},[167,952,227],{"class":210},[167,954,230],{"class":173},[167,956,957],{"class":233}," text",[167,959,960],{"class":214},") ",[167,962,963],{"class":173},"const\n",[167,965,966],{"class":169,"line":347},[167,967,968],{"class":214},"    {\n",[167,970,971,974,976,978,981,983,986,988,991,993,996,998,1001,1003,1005,1007,1009],{"class":169,"line":363},[167,972,973],{"class":210},"        std",[167,975,268],{"class":214},[167,977,271],{"class":173},[167,979,980],{"class":214}," prefix_ ",[167,982,271],{"class":173},[167,984,985],{"class":177}," \" #\"",[167,987,282],{"class":173},[167,989,990],{"class":214}," id ",[167,992,271],{"class":173},[167,994,995],{"class":177}," \": \"",[167,997,282],{"class":173},[167,999,1000],{"class":214}," text ",[167,1002,271],{"class":173},[167,1004,300],{"class":177},[167,1006,304],{"class":303},[167,1008,307],{"class":177},[167,1010,310],{"class":214},[167,1012,1013],{"class":169,"line":377},[167,1014,1015],{"class":214},"    }\n",[167,1017,1018],{"class":169,"line":382},[167,1019,1020],{"class":214},"};\n",[167,1022,1023],{"class":169,"line":406},[167,1024,201],{"emptyLinePlaceholder":200},[167,1026,1027,1029,1031],{"class":169,"line":411},[167,1028,240],{"class":173},[167,1030,329],{"class":210},[167,1032,332],{"class":214},[167,1034,1035],{"class":169,"line":417},[167,1036,259],{"class":214},[167,1038,1039],{"class":169,"line":444},[167,1040,344],{"class":343},[167,1042,1043,1045,1047,1049,1051],{"class":169,"line":462},[167,1044,350],{"class":173},[167,1046,221],{"class":210},[167,1048,224],{"class":214},[167,1050,357],{"class":210},[167,1052,360],{"class":214},[167,1054,1055,1057,1059,1061,1063],{"class":169,"line":467},[167,1056,350],{"class":173},[167,1058,221],{"class":210},[167,1060,224],{"class":214},[167,1062,357],{"class":210},[167,1064,374],{"class":214},[167,1066,1067],{"class":169,"line":496},[167,1068,201],{"emptyLinePlaceholder":200},[167,1070,1071,1074,1077,1079,1082],{"class":169,"line":509},[167,1072,1073],{"class":214},"    Printer ",[167,1075,1076],{"class":210},"printer",[167,1078,215],{"class":214},[167,1080,1081],{"class":177},"\"LOG\"",[167,1083,403],{"class":214},[167,1085,1086],{"class":169,"line":514},[167,1087,201],{"emptyLinePlaceholder":200},[167,1089,1090],{"class":169,"line":525},[167,1091,414],{"class":343},[167,1093,1095,1097,1100,1102,1104,1106,1108,1110,1112,1115,1118,1120],{"class":169,"line":1094},27,[167,1096,420],{"class":173},[167,1098,1099],{"class":214}," print_any ",[167,1101,426],{"class":173},[167,1103,221],{"class":210},[167,1105,224],{"class":214},[167,1107,41],{"class":210},[167,1109,215],{"class":214},[167,1111,230],{"class":173},[167,1113,1114],{"class":210},"Printer",[167,1116,1117],{"class":214},"::print, ",[167,1119,230],{"class":173},[167,1121,1122],{"class":214},"printer, _1, _2);\n",[167,1124,1126,1129,1131,1134,1136,1139],{"class":169,"line":1125},28,[167,1127,1128],{"class":210},"    print_any",[167,1130,215],{"class":214},[167,1132,1133],{"class":303},"7",[167,1135,237],{"class":214},[167,1137,1138],{"class":177},"\"ready\"",[167,1140,403],{"class":214},[167,1142,1144],{"class":169,"line":1143},29,[167,1145,201],{"emptyLinePlaceholder":200},[167,1147,1149,1151,1154,1156,1158,1160,1162,1164,1166,1168,1170,1172,1175,1178],{"class":169,"line":1148},30,[167,1150,420],{"class":173},[167,1152,1153],{"class":214}," print_ok ",[167,1155,426],{"class":173},[167,1157,221],{"class":210},[167,1159,224],{"class":214},[167,1161,41],{"class":210},[167,1163,215],{"class":214},[167,1165,230],{"class":173},[167,1167,1114],{"class":210},[167,1169,1117],{"class":214},[167,1171,230],{"class":173},[167,1173,1174],{"class":214},"printer, _1, ",[167,1176,1177],{"class":177},"\"ok\"",[167,1179,403],{"class":214},[167,1181,1183,1186,1188,1191],{"class":169,"line":1182},31,[167,1184,1185],{"class":210},"    print_ok",[167,1187,215],{"class":214},[167,1189,1190],{"class":303},"8",[167,1192,403],{"class":214},[167,1194,1196],{"class":169,"line":1195},32,[167,1197,201],{"emptyLinePlaceholder":200},[167,1199,1201,1203,1205],{"class":169,"line":1200},33,[167,1202,517],{"class":173},[167,1204,520],{"class":303},[167,1206,310],{"class":214},[167,1208,1210],{"class":169,"line":1209},34,[167,1211,316],{"class":214},[14,1213,1214,534],{},[531,1215,533],{},[158,1217,1220],{"className":1218,"code":1219,"language":540,"meta":163},[538],"LOG #7: ready\nLOG #8: ok\n",[33,1221,1219],{"__ignoreMap":163},[14,1223,1224,1225,1228,1229,1232,1233,1236],{},"這裏 ",[33,1226,1227],{},"&printer"," 必須在 ",[33,1230,1231],{},"print_any"," 和 ",[33,1234,1235],{},"print_ok"," 使用期間一直有效。如果綁定後的回調會被保存到更久的地方，通常要考慮智能指針或更明確的生命週期管理。",[153,1238,1240],{"id":1239},"示例-4bind-和-lambda-的對比","示例 4：bind 和 Lambda 的對比",[14,1242,1243],{},"同一個參數適配任務，Lambda 往往更直觀，因為參數名和調用關係都寫得很清楚。",[158,1245,1247],{"className":160,"code":1246,"language":162,"meta":163,"style":163},"#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",[33,1248,1249,1255,1261,1265,1295,1299,1324,1328,1332,1340,1344,1348,1360,1372,1376,1380,1403,1428,1442,1447,1451,1489,1525,1529,1551,1574,1587,1591,1595,1631,1667,1671,1679],{"__ignoreMap":163},[167,1250,1251,1253],{"class":169,"line":170},[167,1252,174],{"class":173},[167,1254,178],{"class":177},[167,1256,1257,1259],{"class":169,"line":181},[167,1258,174],{"class":173},[167,1260,186],{"class":177},[167,1262,1263],{"class":169,"line":189},[167,1264,201],{"emptyLinePlaceholder":200},[167,1266,1267,1269,1272,1274,1276,1279,1281,1283,1286,1288,1290,1293],{"class":169,"line":197},[167,1268,240],{"class":173},[167,1270,1271],{"class":210}," weighted_sum",[167,1273,215],{"class":214},[167,1275,240],{"class":173},[167,1277,1278],{"class":233}," base",[167,1280,237],{"class":214},[167,1282,240],{"class":173},[167,1284,1285],{"class":233}," x",[167,1287,237],{"class":214},[167,1289,240],{"class":173},[167,1291,1292],{"class":233}," y",[167,1294,253],{"class":214},[167,1296,1297],{"class":169,"line":204},[167,1298,259],{"class":214},[167,1300,1301,1303,1306,1309,1312,1315,1318,1321],{"class":169,"line":256},[167,1302,517],{"class":173},[167,1304,1305],{"class":214}," base ",[167,1307,1308],{"class":173},"+",[167,1310,1311],{"class":214}," x ",[167,1313,1314],{"class":173},"*",[167,1316,1317],{"class":303}," 10",[167,1319,1320],{"class":173}," +",[167,1322,1323],{"class":214}," y;\n",[167,1325,1326],{"class":169,"line":262},[167,1327,316],{"class":214},[167,1329,1330],{"class":169,"line":313},[167,1331,201],{"emptyLinePlaceholder":200},[167,1333,1334,1336,1338],{"class":169,"line":319},[167,1335,240],{"class":173},[167,1337,329],{"class":210},[167,1339,332],{"class":214},[167,1341,1342],{"class":169,"line":324},[167,1343,259],{"class":214},[167,1345,1346],{"class":169,"line":335},[167,1347,344],{"class":343},[167,1349,1350,1352,1354,1356,1358],{"class":169,"line":340},[167,1351,350],{"class":173},[167,1353,221],{"class":210},[167,1355,224],{"class":214},[167,1357,357],{"class":210},[167,1359,360],{"class":214},[167,1361,1362,1364,1366,1368,1370],{"class":169,"line":347},[167,1363,350],{"class":173},[167,1365,221],{"class":210},[167,1367,224],{"class":214},[167,1369,357],{"class":210},[167,1371,374],{"class":214},[167,1373,1374],{"class":169,"line":363},[167,1375,201],{"emptyLinePlaceholder":200},[167,1377,1378],{"class":169,"line":377},[167,1379,414],{"class":343},[167,1381,1382,1384,1387,1389,1391,1393,1395,1398,1401],{"class":169,"line":382},[167,1383,420],{"class":173},[167,1385,1386],{"class":214}," by_bind ",[167,1388,426],{"class":173},[167,1390,221],{"class":210},[167,1392,224],{"class":214},[167,1394,41],{"class":210},[167,1396,1397],{"class":214},"(weighted_sum, ",[167,1399,1400],{"class":303},"100",[167,1402,441],{"class":214},[167,1404,1405,1407,1410,1412,1415,1417,1419,1421,1423,1425],{"class":169,"line":406},[167,1406,420],{"class":173},[167,1408,1409],{"class":214}," by_lambda ",[167,1411,426],{"class":173},[167,1413,1414],{"class":214}," [](",[167,1416,240],{"class":173},[167,1418,1285],{"class":233},[167,1420,237],{"class":214},[167,1422,240],{"class":173},[167,1424,1292],{"class":233},[167,1426,1427],{"class":214},") {\n",[167,1429,1430,1433,1435,1437,1439],{"class":169,"line":411},[167,1431,1432],{"class":173},"        return",[167,1434,1271],{"class":210},[167,1436,215],{"class":214},[167,1438,1400],{"class":303},[167,1440,1441],{"class":214},", x, y);\n",[167,1443,1444],{"class":169,"line":417},[167,1445,1446],{"class":214},"    };\n",[167,1448,1449],{"class":169,"line":444},[167,1450,201],{"emptyLinePlaceholder":200},[167,1452,1453,1455,1457,1459,1462,1464,1467,1469,1472,1474,1477,1479,1481,1483,1485,1487],{"class":169,"line":462},[167,1454,265],{"class":210},[167,1456,268],{"class":214},[167,1458,271],{"class":173},[167,1460,1461],{"class":177}," \"bind result = \"",[167,1463,282],{"class":173},[167,1465,1466],{"class":210}," by_bind",[167,1468,215],{"class":214},[167,1470,1471],{"class":303},"3",[167,1473,237],{"class":214},[167,1475,1476],{"class":303},"4",[167,1478,960],{"class":214},[167,1480,271],{"class":173},[167,1482,300],{"class":177},[167,1484,304],{"class":303},[167,1486,307],{"class":177},[167,1488,310],{"class":214},[167,1490,1491,1493,1495,1497,1500,1502,1505,1507,1509,1511,1513,1515,1517,1519,1521,1523],{"class":169,"line":467},[167,1492,265],{"class":210},[167,1494,268],{"class":214},[167,1496,271],{"class":173},[167,1498,1499],{"class":177}," \"lambda result = \"",[167,1501,282],{"class":173},[167,1503,1504],{"class":210}," by_lambda",[167,1506,215],{"class":214},[167,1508,1471],{"class":303},[167,1510,237],{"class":214},[167,1512,1476],{"class":303},[167,1514,960],{"class":214},[167,1516,271],{"class":173},[167,1518,300],{"class":177},[167,1520,304],{"class":303},[167,1522,307],{"class":177},[167,1524,310],{"class":214},[167,1526,1527],{"class":169,"line":496},[167,1528,201],{"emptyLinePlaceholder":200},[167,1530,1531,1533,1536,1538,1540,1542,1544,1546,1548],{"class":169,"line":509},[167,1532,420],{"class":173},[167,1534,1535],{"class":214}," swapped_bind ",[167,1537,426],{"class":173},[167,1539,221],{"class":210},[167,1541,224],{"class":214},[167,1543,41],{"class":210},[167,1545,1397],{"class":214},[167,1547,1400],{"class":303},[167,1549,1550],{"class":214},", _2, _1);\n",[167,1552,1553,1555,1558,1560,1562,1564,1566,1568,1570,1572],{"class":169,"line":514},[167,1554,420],{"class":173},[167,1556,1557],{"class":214}," swapped_lambda ",[167,1559,426],{"class":173},[167,1561,1414],{"class":214},[167,1563,240],{"class":173},[167,1565,1285],{"class":233},[167,1567,237],{"class":214},[167,1569,240],{"class":173},[167,1571,1292],{"class":233},[167,1573,1427],{"class":214},[167,1575,1576,1578,1580,1582,1584],{"class":169,"line":525},[167,1577,1432],{"class":173},[167,1579,1271],{"class":210},[167,1581,215],{"class":214},[167,1583,1400],{"class":303},[167,1585,1586],{"class":214},", y, x);\n",[167,1588,1589],{"class":169,"line":1094},[167,1590,1446],{"class":214},[167,1592,1593],{"class":169,"line":1125},[167,1594,201],{"emptyLinePlaceholder":200},[167,1596,1597,1599,1601,1603,1606,1608,1611,1613,1615,1617,1619,1621,1623,1625,1627,1629],{"class":169,"line":1143},[167,1598,265],{"class":210},[167,1600,268],{"class":214},[167,1602,271],{"class":173},[167,1604,1605],{"class":177}," \"swapped bind result = \"",[167,1607,282],{"class":173},[167,1609,1610],{"class":210}," swapped_bind",[167,1612,215],{"class":214},[167,1614,1471],{"class":303},[167,1616,237],{"class":214},[167,1618,1476],{"class":303},[167,1620,960],{"class":214},[167,1622,271],{"class":173},[167,1624,300],{"class":177},[167,1626,304],{"class":303},[167,1628,307],{"class":177},[167,1630,310],{"class":214},[167,1632,1633,1635,1637,1639,1642,1644,1647,1649,1651,1653,1655,1657,1659,1661,1663,1665],{"class":169,"line":1148},[167,1634,265],{"class":210},[167,1636,268],{"class":214},[167,1638,271],{"class":173},[167,1640,1641],{"class":177}," \"swapped lambda result = \"",[167,1643,282],{"class":173},[167,1645,1646],{"class":210}," swapped_lambda",[167,1648,215],{"class":214},[167,1650,1471],{"class":303},[167,1652,237],{"class":214},[167,1654,1476],{"class":303},[167,1656,960],{"class":214},[167,1658,271],{"class":173},[167,1660,300],{"class":177},[167,1662,304],{"class":303},[167,1664,307],{"class":177},[167,1666,310],{"class":214},[167,1668,1669],{"class":169,"line":1182},[167,1670,201],{"emptyLinePlaceholder":200},[167,1672,1673,1675,1677],{"class":169,"line":1195},[167,1674,517],{"class":173},[167,1676,520],{"class":303},[167,1678,310],{"class":214},[167,1680,1681],{"class":169,"line":1200},[167,1682,316],{"class":214},[14,1684,1685,534],{},[531,1686,533],{},[158,1688,1691],{"className":1689,"code":1690,"language":540,"meta":163},[538],"bind result = 134\nlambda result = 134\nswapped bind result = 143\nswapped lambda result = 143\n",[33,1692,1690],{"__ignoreMap":163},[153,1694,1696],{"id":1695},"示例-5bind-默認拷貝參數需要引用時用-stdref","示例 5：bind 默認拷貝參數，需要引用時用 std::ref",[14,1698,1699,1701,1702,1705,1706,1709],{},[33,1700,5],{}," 保存普通參數時默認拷貝。如果你要綁定引用，必須顯式使用 ",[33,1703,1704],{},"std::ref"," 或 ",[33,1707,1708],{},"std::cref","。",[158,1711,1713],{"className":160,"code":1712,"language":162,"meta":163,"style":163},"#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",[33,1714,1715,1721,1727,1731,1755,1759,1770,1796,1800,1804,1812,1816,1820,1833,1837,1841,1864,1872,1897,1901,1934,1941,1966,1970,1978],{"__ignoreMap":163},[167,1716,1717,1719],{"class":169,"line":170},[167,1718,174],{"class":173},[167,1720,178],{"class":177},[167,1722,1723,1725],{"class":169,"line":181},[167,1724,174],{"class":173},[167,1726,186],{"class":177},[167,1728,1729],{"class":169,"line":189},[167,1730,201],{"emptyLinePlaceholder":200},[167,1732,1733,1735,1738,1740,1743,1746,1748,1750,1753],{"class":169,"line":197},[167,1734,207],{"class":173},[167,1736,1737],{"class":210}," add_to",[167,1739,215],{"class":214},[167,1741,1742],{"class":173},"int&",[167,1744,1745],{"class":233}," total",[167,1747,237],{"class":214},[167,1749,240],{"class":173},[167,1751,1752],{"class":233}," value",[167,1754,253],{"class":214},[167,1756,1757],{"class":169,"line":204},[167,1758,259],{"class":214},[167,1760,1761,1764,1767],{"class":169,"line":256},[167,1762,1763],{"class":214},"    total ",[167,1765,1766],{"class":173},"+=",[167,1768,1769],{"class":214}," value;\n",[167,1771,1772,1774,1776,1778,1781,1783,1786,1788,1790,1792,1794],{"class":169,"line":262},[167,1773,265],{"class":210},[167,1775,268],{"class":214},[167,1777,271],{"class":173},[167,1779,1780],{"class":177}," \"inside total = \"",[167,1782,282],{"class":173},[167,1784,1785],{"class":214}," total ",[167,1787,271],{"class":173},[167,1789,300],{"class":177},[167,1791,304],{"class":303},[167,1793,307],{"class":177},[167,1795,310],{"class":214},[167,1797,1798],{"class":169,"line":313},[167,1799,316],{"class":214},[167,1801,1802],{"class":169,"line":319},[167,1803,201],{"emptyLinePlaceholder":200},[167,1805,1806,1808,1810],{"class":169,"line":324},[167,1807,240],{"class":173},[167,1809,329],{"class":210},[167,1811,332],{"class":214},[167,1813,1814],{"class":169,"line":335},[167,1815,259],{"class":214},[167,1817,1818],{"class":169,"line":340},[167,1819,344],{"class":343},[167,1821,1822,1825,1827,1829,1831],{"class":169,"line":347},[167,1823,1824],{"class":173},"    int",[167,1826,1785],{"class":214},[167,1828,426],{"class":173},[167,1830,520],{"class":303},[167,1832,310],{"class":214},[167,1834,1835],{"class":169,"line":363},[167,1836,201],{"emptyLinePlaceholder":200},[167,1838,1839],{"class":169,"line":377},[167,1840,414],{"class":343},[167,1842,1843,1845,1848,1850,1852,1854,1856,1859,1862],{"class":169,"line":382},[167,1844,420],{"class":173},[167,1846,1847],{"class":214}," add_copy ",[167,1849,426],{"class":173},[167,1851,221],{"class":210},[167,1853,224],{"class":214},[167,1855,41],{"class":210},[167,1857,1858],{"class":214},"(add_to, total, ",[167,1860,1861],{"class":303},"5",[167,1863,403],{"class":214},[167,1865,1866,1869],{"class":169,"line":406},[167,1867,1868],{"class":210},"    add_copy",[167,1870,1871],{"class":214},"();\n",[167,1873,1874,1876,1878,1880,1883,1885,1887,1889,1891,1893,1895],{"class":169,"line":411},[167,1875,265],{"class":210},[167,1877,268],{"class":214},[167,1879,271],{"class":173},[167,1881,1882],{"class":177}," \"outside after copy bind = \"",[167,1884,282],{"class":173},[167,1886,1785],{"class":214},[167,1888,271],{"class":173},[167,1890,300],{"class":177},[167,1892,304],{"class":303},[167,1894,307],{"class":177},[167,1896,310],{"class":214},[167,1898,1899],{"class":169,"line":417},[167,1900,201],{"emptyLinePlaceholder":200},[167,1902,1903,1905,1908,1910,1912,1914,1916,1919,1922,1924,1927,1930,1932],{"class":169,"line":444},[167,1904,420],{"class":173},[167,1906,1907],{"class":214}," add_ref ",[167,1909,426],{"class":173},[167,1911,221],{"class":210},[167,1913,224],{"class":214},[167,1915,41],{"class":210},[167,1917,1918],{"class":214},"(add_to, ",[167,1920,1921],{"class":210},"std",[167,1923,224],{"class":214},[167,1925,1926],{"class":210},"ref",[167,1928,1929],{"class":214},"(total), ",[167,1931,1861],{"class":303},[167,1933,403],{"class":214},[167,1935,1936,1939],{"class":169,"line":462},[167,1937,1938],{"class":210},"    add_ref",[167,1940,1871],{"class":214},[167,1942,1943,1945,1947,1949,1952,1954,1956,1958,1960,1962,1964],{"class":169,"line":467},[167,1944,265],{"class":210},[167,1946,268],{"class":214},[167,1948,271],{"class":173},[167,1950,1951],{"class":177}," \"outside after ref bind = \"",[167,1953,282],{"class":173},[167,1955,1785],{"class":214},[167,1957,271],{"class":173},[167,1959,300],{"class":177},[167,1961,304],{"class":303},[167,1963,307],{"class":177},[167,1965,310],{"class":214},[167,1967,1968],{"class":169,"line":496},[167,1969,201],{"emptyLinePlaceholder":200},[167,1971,1972,1974,1976],{"class":169,"line":509},[167,1973,517],{"class":173},[167,1975,520],{"class":303},[167,1977,310],{"class":214},[167,1979,1980],{"class":169,"line":514},[167,1981,316],{"class":214},[14,1983,1984,534],{},[531,1985,533],{},[158,1987,1990],{"className":1988,"code":1989,"language":540,"meta":163},[538],"inside total = 5\noutside after copy bind = 0\ninside total = 5\noutside after ref bind = 5\n",[33,1991,1989],{"__ignoreMap":163},[153,1993,1995,1996,1999],{"id":1994},"示例-6在成員函數中使用-this-綁定當前對象","示例 6：在成員函數中使用 ",[33,1997,1998],{},"this"," 綁定當前對象",[14,2001,2002,2003,2005,2006,2008,2009,2011,2012,2014],{},"前面的示例是在類外部創建對象，再把對象地址 ",[33,2004,1227],{}," 傳給 ",[33,2007,5],{},"。如果 ",[33,2010,5],{}," 本身就在類的成員函數中使用，可以直接傳入 ",[33,2013,1998],{},"，表示把成員函數綁定到當前對象。",[158,2016,2018],{"className":160,"code":2017,"language":162,"meta":163,"style":163},"#include \u003Cfunctional>\n#include \u003Ciostream>\n#include \u003Cstring>\n\nclass Robot\n{\n    std::string name_;\n\npublic:\n    explicit Robot(const std::string& name) : name_(name) {}\n\n    void on_message(int id, const std::string& text)\n    {\n        std::cout \u003C\u003C name_ \u003C\u003C \" #\" \u003C\u003C id \u003C\u003C \": \" \u003C\u003C text \u003C\u003C \"\\n\";\n    }\n\n    void demo()\n    {\n        using std::placeholders::_1;\n        using std::placeholders::_2;\n\n        auto callback = std::bind(&Robot::on_message, this, _1, _2);\n\n        callback(7, \"ready\");\n        callback(8, \"running\");\n    }\n};\n\nint main()\n{\n    Robot robot(\"Cyber\");\n    robot.demo();\n\n    return 0;\n}\n",[33,2019,2020,2026,2032,2038,2042,2049,2053,2060,2064,2068,2097,2101,2130,2134,2171,2175,2179,2188,2192,2205,2217,2221,2251,2255,2270,2285,2289,2293,2297,2305,2309,2324,2334,2338,2346],{"__ignoreMap":163},[167,2021,2022,2024],{"class":169,"line":170},[167,2023,174],{"class":173},[167,2025,178],{"class":177},[167,2027,2028,2030],{"class":169,"line":181},[167,2029,174],{"class":173},[167,2031,186],{"class":177},[167,2033,2034,2036],{"class":169,"line":189},[167,2035,174],{"class":173},[167,2037,194],{"class":177},[167,2039,2040],{"class":169,"line":197},[167,2041,201],{"emptyLinePlaceholder":200},[167,2043,2044,2046],{"class":169,"line":204},[167,2045,868],{"class":173},[167,2047,2048],{"class":210}," Robot\n",[167,2050,2051],{"class":169,"line":256},[167,2052,259],{"class":214},[167,2054,2055,2057],{"class":169,"line":262},[167,2056,265],{"class":210},[167,2058,2059],{"class":214},"::string name_;\n",[167,2061,2062],{"class":169,"line":313},[167,2063,201],{"emptyLinePlaceholder":200},[167,2065,2066],{"class":169,"line":319},[167,2067,891],{"class":173},[167,2069,2070,2072,2075,2077,2079,2081,2083,2085,2087,2089,2091,2094],{"class":169,"line":324},[167,2071,896],{"class":173},[167,2073,2074],{"class":210}," Robot",[167,2076,215],{"class":214},[167,2078,218],{"class":173},[167,2080,221],{"class":210},[167,2082,224],{"class":214},[167,2084,227],{"class":210},[167,2086,230],{"class":173},[167,2088,234],{"class":233},[167,2090,917],{"class":214},[167,2092,2093],{"class":210},"name_",[167,2095,2096],{"class":214},"(name) {}\n",[167,2098,2099],{"class":169,"line":335},[167,2100,201],{"emptyLinePlaceholder":200},[167,2102,2103,2105,2108,2110,2112,2114,2116,2118,2120,2122,2124,2126,2128],{"class":169,"line":340},[167,2104,932],{"class":173},[167,2106,2107],{"class":210}," on_message",[167,2109,215],{"class":214},[167,2111,240],{"class":173},[167,2113,942],{"class":233},[167,2115,237],{"class":214},[167,2117,218],{"class":173},[167,2119,221],{"class":210},[167,2121,224],{"class":214},[167,2123,227],{"class":210},[167,2125,230],{"class":173},[167,2127,957],{"class":233},[167,2129,253],{"class":214},[167,2131,2132],{"class":169,"line":347},[167,2133,968],{"class":214},[167,2135,2136,2138,2140,2142,2145,2147,2149,2151,2153,2155,2157,2159,2161,2163,2165,2167,2169],{"class":169,"line":363},[167,2137,973],{"class":210},[167,2139,268],{"class":214},[167,2141,271],{"class":173},[167,2143,2144],{"class":214}," name_ ",[167,2146,271],{"class":173},[167,2148,985],{"class":177},[167,2150,282],{"class":173},[167,2152,990],{"class":214},[167,2154,271],{"class":173},[167,2156,995],{"class":177},[167,2158,282],{"class":173},[167,2160,1000],{"class":214},[167,2162,271],{"class":173},[167,2164,300],{"class":177},[167,2166,304],{"class":303},[167,2168,307],{"class":177},[167,2170,310],{"class":214},[167,2172,2173],{"class":169,"line":377},[167,2174,1015],{"class":214},[167,2176,2177],{"class":169,"line":382},[167,2178,201],{"emptyLinePlaceholder":200},[167,2180,2181,2183,2186],{"class":169,"line":406},[167,2182,932],{"class":173},[167,2184,2185],{"class":210}," demo",[167,2187,332],{"class":214},[167,2189,2190],{"class":169,"line":411},[167,2191,968],{"class":214},[167,2193,2194,2197,2199,2201,2203],{"class":169,"line":417},[167,2195,2196],{"class":173},"        using",[167,2198,221],{"class":210},[167,2200,224],{"class":214},[167,2202,357],{"class":210},[167,2204,360],{"class":214},[167,2206,2207,2209,2211,2213,2215],{"class":169,"line":444},[167,2208,2196],{"class":173},[167,2210,221],{"class":210},[167,2212,224],{"class":214},[167,2214,357],{"class":210},[167,2216,374],{"class":214},[167,2218,2219],{"class":169,"line":462},[167,2220,201],{"emptyLinePlaceholder":200},[167,2222,2223,2226,2229,2231,2233,2235,2237,2239,2241,2244,2247,2249],{"class":169,"line":467},[167,2224,2225],{"class":173},"        auto",[167,2227,2228],{"class":214}," callback ",[167,2230,426],{"class":173},[167,2232,221],{"class":210},[167,2234,224],{"class":214},[167,2236,41],{"class":210},[167,2238,215],{"class":214},[167,2240,230],{"class":173},[167,2242,2243],{"class":210},"Robot",[167,2245,2246],{"class":214},"::on_message, ",[167,2248,1998],{"class":303},[167,2250,441],{"class":214},[167,2252,2253],{"class":169,"line":496},[167,2254,201],{"emptyLinePlaceholder":200},[167,2256,2257,2260,2262,2264,2266,2268],{"class":169,"line":509},[167,2258,2259],{"class":210},"        callback",[167,2261,215],{"class":214},[167,2263,1133],{"class":303},[167,2265,237],{"class":214},[167,2267,1138],{"class":177},[167,2269,403],{"class":214},[167,2271,2272,2274,2276,2278,2280,2283],{"class":169,"line":514},[167,2273,2259],{"class":210},[167,2275,215],{"class":214},[167,2277,1190],{"class":303},[167,2279,237],{"class":214},[167,2281,2282],{"class":177},"\"running\"",[167,2284,403],{"class":214},[167,2286,2287],{"class":169,"line":525},[167,2288,1015],{"class":214},[167,2290,2291],{"class":169,"line":1094},[167,2292,1020],{"class":214},[167,2294,2295],{"class":169,"line":1125},[167,2296,201],{"emptyLinePlaceholder":200},[167,2298,2299,2301,2303],{"class":169,"line":1143},[167,2300,240],{"class":173},[167,2302,329],{"class":210},[167,2304,332],{"class":214},[167,2306,2307],{"class":169,"line":1148},[167,2308,259],{"class":214},[167,2310,2311,2314,2317,2319,2322],{"class":169,"line":1182},[167,2312,2313],{"class":214},"    Robot ",[167,2315,2316],{"class":210},"robot",[167,2318,215],{"class":214},[167,2320,2321],{"class":177},"\"Cyber\"",[167,2323,403],{"class":214},[167,2325,2326,2329,2332],{"class":169,"line":1195},[167,2327,2328],{"class":214},"    robot.",[167,2330,2331],{"class":210},"demo",[167,2333,1871],{"class":214},[167,2335,2336],{"class":169,"line":1200},[167,2337,201],{"emptyLinePlaceholder":200},[167,2339,2340,2342,2344],{"class":169,"line":1209},[167,2341,517],{"class":173},[167,2343,520],{"class":303},[167,2345,310],{"class":214},[167,2347,2349],{"class":169,"line":2348},35,[167,2350,316],{"class":214},[14,2352,2353,534],{},[531,2354,533],{},[158,2356,2359],{"className":2357,"code":2358,"language":540,"meta":163},[538],"Cyber #7: ready\nCyber #8: running\n",[33,2360,2358],{"__ignoreMap":163},[14,2362,2363],{},"這裏最重要的是：",[158,2365,2367],{"className":160,"code":2366,"language":162,"meta":163,"style":163},"auto callback = std::bind(&Robot::on_message, this, _1, _2);\n",[33,2368,2369],{"__ignoreMap":163},[167,2370,2371,2374,2376,2378,2380,2382,2384,2386,2388,2390,2392,2394],{"class":169,"line":170},[167,2372,2373],{"class":173},"auto",[167,2375,2228],{"class":214},[167,2377,426],{"class":173},[167,2379,221],{"class":210},[167,2381,224],{"class":214},[167,2383,41],{"class":210},[167,2385,215],{"class":214},[167,2387,230],{"class":173},[167,2389,2243],{"class":210},[167,2391,2246],{"class":214},[167,2393,1998],{"class":303},[167,2395,441],{"class":214},[14,2397,2398],{},"把它拆開看：",[79,2400,2401,2410],{},[82,2402,2403],{},[85,2404,2405,2408],{},[88,2406,2407],{"align":90},"參數",[88,2409,94],{"align":90},[96,2411,2412,2422,2431,2443],{},[85,2413,2414,2419],{},[101,2415,2416],{"align":90},[33,2417,2418],{},"&Robot::on_message",[101,2420,2421],{"align":90},"要調用的成員函數",[85,2423,2424,2428],{},[101,2425,2426],{"align":90},[33,2427,1998],{},[101,2429,2430],{"align":90},"調用這個成員函數的當前對象",[85,2432,2433,2437],{},[101,2434,2435],{"align":90},[33,2436,56],{},[101,2438,2439,2442],{"align":90},[33,2440,2441],{},"callback()"," 調用時傳入的第一個參數",[85,2444,2445,2449],{},[101,2446,2447],{"align":90},[33,2448,60],{},[101,2450,2451,2453],{"align":90},[33,2452,2441],{}," 調用時傳入的第二個參數",[14,2455,2456,2457,2459,2460,2462,2463,2465],{},"非靜態成員函數不能脱離對象單獨調用。",[33,2458,2418],{}," 只説明瞭“要調用哪個成員函數”，還必須告訴 ",[33,2461,5],{},"“在哪個 ",[33,2464,2243],{}," 對象上調用”。",[14,2467,2468],{},"在類外部，可以寫：",[158,2470,2472],{"className":160,"code":2471,"language":162,"meta":163,"style":163},"std::bind(&Robot::on_message, &robot, _1, _2);\n",[33,2473,2474],{"__ignoreMap":163},[167,2475,2476,2478,2480,2482,2484,2486,2488,2490,2492],{"class":169,"line":170},[167,2477,1921],{"class":210},[167,2479,224],{"class":214},[167,2481,41],{"class":210},[167,2483,215],{"class":214},[167,2485,230],{"class":173},[167,2487,2243],{"class":210},[167,2489,2246],{"class":214},[167,2491,230],{"class":173},[167,2493,2494],{"class":214},"robot, _1, _2);\n",[14,2496,2497,2498,2500,2501,2503],{},"而在 ",[33,2499,2243],{}," 自己的成員函數內部，",[33,2502,1998],{}," 就是當前對象的指針，所以可以直接寫：",[158,2505,2507],{"className":160,"code":2506,"language":162,"meta":163,"style":163},"std::bind(&Robot::on_message, this, _1, _2);\n",[33,2508,2509],{"__ignoreMap":163},[167,2510,2511,2513,2515,2517,2519,2521,2523,2525,2527],{"class":169,"line":170},[167,2512,1921],{"class":210},[167,2514,224],{"class":214},[167,2516,41],{"class":210},[167,2518,215],{"class":214},[167,2520,230],{"class":173},[167,2522,2243],{"class":210},[167,2524,2246],{"class":214},[167,2526,1998],{"class":303},[167,2528,441],{"class":214},[14,2530,2531],{},"例如：",[158,2533,2535],{"className":160,"code":2534,"language":162,"meta":163,"style":163},"Robot robot(\"Cyber\");\nrobot.demo();\n",[33,2536,2537,2550],{"__ignoreMap":163},[167,2538,2539,2541,2544,2546,2548],{"class":169,"line":170},[167,2540,2243],{"class":210},[167,2542,2543],{"class":210}," robot",[167,2545,215],{"class":214},[167,2547,2321],{"class":177},[167,2549,403],{"class":214},[167,2551,2552,2555,2557],{"class":169,"line":181},[167,2553,2554],{"class":214},"robot.",[167,2556,2331],{"class":210},[167,2558,1871],{"class":214},[14,2560,2561,2562,2565,2566,2569,2570,2572,2573,1709],{},"進入 ",[33,2563,2564],{},"robot.demo()"," 後，",[33,2567,2568],{},"demo()"," 內部的 ",[33,2571,1998],{}," 就指向 ",[33,2574,2316],{},[14,2576,2577],{},"因此：",[158,2579,2581],{"className":160,"code":2580,"language":162,"meta":163,"style":163},"callback(7, \"ready\");\n",[33,2582,2583],{"__ignoreMap":163},[167,2584,2585,2588,2590,2592,2594,2596],{"class":169,"line":170},[167,2586,2587],{"class":210},"callback",[167,2589,215],{"class":214},[167,2591,1133],{"class":303},[167,2593,237],{"class":214},[167,2595,1138],{"class":177},[167,2597,403],{"class":214},[14,2599,2600],{},"可以近似理解成：",[158,2602,2604],{"className":160,"code":2603,"language":162,"meta":163,"style":163},"this->on_message(7, \"ready\");\n",[33,2605,2606],{"__ignoreMap":163},[167,2607,2608,2610,2613,2616,2618,2620,2622,2624],{"class":169,"line":170},[167,2609,1998],{"class":303},[167,2611,2612],{"class":214},"->",[167,2614,2615],{"class":210},"on_message",[167,2617,215],{"class":214},[167,2619,1133],{"class":303},[167,2621,237],{"class":214},[167,2623,1138],{"class":177},[167,2625,403],{"class":214},[14,2627,2628,2629,2631],{},"如果當前對象就是 ",[33,2630,2316],{},"，也就相當於：",[158,2633,2635],{"className":160,"code":2634,"language":162,"meta":163,"style":163},"robot.on_message(7, \"ready\");\n",[33,2636,2637],{"__ignoreMap":163},[167,2638,2639,2641,2643,2645,2647,2649,2651],{"class":169,"line":170},[167,2640,2554],{"class":214},[167,2642,2615],{"class":210},[167,2644,215],{"class":214},[167,2646,1133],{"class":303},[167,2648,237],{"class":214},[167,2650,1138],{"class":177},[167,2652,403],{"class":214},[14,2654,2655],{},"所以這類寫法可以記成：",[158,2657,2659],{"className":160,"code":2658,"language":162,"meta":163,"style":163},"std::bind(&类名::成员函数, this, 参数...);\n",[33,2660,2661],{"__ignoreMap":163},[167,2662,2663,2665,2667,2669,2671,2673,2676,2678],{"class":169,"line":170},[167,2664,1921],{"class":210},[167,2666,224],{"class":214},[167,2668,41],{"class":210},[167,2670,215],{"class":214},[167,2672,230],{"class":173},[167,2674,2675],{"class":214},"类名::成员函数, ",[167,2677,1998],{"class":303},[167,2679,2680],{"class":214},", 参数...);\n",[14,2682,2683,2684,2686],{},"其中第二個參數 ",[33,2685,1998],{}," 的作用是：",[2688,2689,2690],"blockquote",{},[14,2691,2692],{},[531,2693,2694,2695,2697],{},"告訴 ",[33,2696,5],{},"：以後調用這個成員函數時，就在當前這個對象上調用。",[14,2699,2700],{},"這也是 ROS2 和 Boost.Asio 中很常見的寫法，例如：",[158,2702,2704],{"className":160,"code":2703,"language":162,"meta":163,"style":163},"std::bind(&MyNode::callback, this, _1)\n",[33,2705,2706],{"__ignoreMap":163},[167,2707,2708,2710,2712,2714,2716,2718,2721,2724,2726],{"class":169,"line":170},[167,2709,1921],{"class":210},[167,2711,224],{"class":214},[167,2713,41],{"class":210},[167,2715,215],{"class":214},[167,2717,230],{"class":173},[167,2719,2720],{"class":210},"MyNode",[167,2722,2723],{"class":214},"::callback, ",[167,2725,1998],{"class":303},[167,2727,2728],{"class":214},", _1)\n",[14,2730,2731,2732,2735,2736,2738,2739,1709],{},"它表示把 ",[33,2733,2734],{},"MyNode::callback"," 綁定到當前這個 ",[33,2737,2720],{}," 對象上，再把調用時的第一個參數傳給 ",[33,2740,2587],{},[14,2742,2743,2744,2746,2747,2749],{},"需要注意，",[33,2745,1998],{}," 本質上是一個指針。綁定後的回調如果活得比當前對象更久，對象銷燬後再調用回調，就可能訪問已經失效的 ",[33,2748,1998],{},"，因此異步回調中仍然要注意對象生命週期。",[10,2751,2752],{"id":2752},"關鍵語法解釋",[79,2754,2755,2767],{},[82,2756,2757],{},[85,2758,2759,2761,2764],{},[88,2760,91],{"align":90},[88,2762,2763],{"align":90},"説明",[88,2765,2766],{"align":90},"注意事項",[96,2768,2769,2783,2795,2809,2822,2834],{},[85,2770,2771,2775,2778],{},[101,2772,2773],{"align":90},[33,2774,56],{},[101,2776,2777],{"align":90},"調用新函數時傳入的第一個參數",[101,2779,2780,2781],{"align":90},"來自 ",[33,2782,76],{},[85,2784,2785,2789,2792],{},[101,2786,2787],{"align":90},[33,2788,60],{},[101,2790,2791],{"align":90},"調用新函數時傳入的第二個參數",[101,2793,2794],{"align":90},"可以用來調整順序",[85,2796,2797,2800,2806],{},[101,2798,2799],{"align":90},"固定值",[101,2801,2802,2803,2805],{"align":90},"直接寫在 ",[33,2804,41],{}," 參數裏",[101,2807,2808],{"align":90},"默認會被拷貝保存",[85,2810,2811,2816,2819],{},[101,2812,2813],{"align":90},[33,2814,2815],{},"&Class::method",[101,2817,2818],{"align":90},"成員函數指針",[101,2820,2821],{"align":90},"後面還要綁定對象",[85,2823,2824,2828,2831],{},[101,2825,2826],{"align":90},[33,2827,1998],{},[101,2829,2830],{"align":90},"成員函數內部的當前對象指針",[101,2832,2833],{"align":90},"常作為綁定成員函數時的第二個參數",[85,2835,2836,2841,2847],{},[101,2837,2838],{"align":90},[33,2839,2840],{},"std::ref(x)",[101,2842,2843,2844],{"align":90},"按引用綁定 ",[33,2845,2846],{},"x",[101,2848,2849,2850,2852],{"align":90},"不寫 ",[33,2851,1704],{}," 通常會拷貝",[10,2854,2856],{"id":2855},"bind-和-lambda-怎麼選","bind 和 Lambda 怎麼選",[79,2858,2859,2869],{},[82,2860,2861],{},[85,2862,2863,2866],{},[88,2864,2865],{"align":90},"場景",[88,2867,2868],{"align":90},"推薦",[96,2870,2871,2882,2890,2900,2907],{},[85,2872,2873,2876],{},[101,2874,2875],{"align":90},"簡單固定參數",[101,2877,2878,2879,2881],{"align":90},"Lambda 或 ",[33,2880,41],{}," 都可以",[85,2883,2884,2887],{},[101,2885,2886],{"align":90},"參數關係需要讀得很清楚",[101,2888,2889],{"align":90},"Lambda",[85,2891,2892,2895],{},[101,2893,2894],{"align":90},"綁定成員函數給舊接口",[101,2896,2897,2899],{"align":90},[33,2898,41],{}," 很常見，也可以用 Lambda",[85,2901,2902,2905],{},[101,2903,2904],{"align":90},"需要複雜邏輯、條件判斷",[101,2906,2889],{"align":90},[85,2908,2909,2912],{},[101,2910,2911],{"align":90},"閲讀舊代碼或 ROS2\u002FBoost.Asio 示例",[101,2913,2914,2915],{"align":90},"必須看懂 ",[33,2916,41],{},[14,2918,2919,2920,1709],{},"一句話：新代碼優先考慮 Lambda；遇到已有接口適配、舊項目代碼、成員函數回調時，要能熟練讀懂 ",[33,2921,5],{},[10,2923,2924],{"id":2924},"常見錯誤",[2926,2927,2928,2933,2941,2944,2947],"ol",{},[21,2929,2930,2931,1709],{},"忘記佔位符來自 ",[33,2932,76],{},[21,2934,2935,2936,57,2938,2940],{},"把 ",[33,2937,56],{},[33,2939,60],{}," 的順序看反，導致實參順序錯誤。",[21,2942,2943],{},"綁定成員函數時忘記綁定對象。",[21,2945,2946],{},"綁定對象指針後，對象先被銷燬，回調還在使用。",[21,2948,2949,2950,2952,2953,1709],{},"以為 ",[33,2951,41],{}," 默認按引用保存參數。默認是拷貝，需要引用時用 ",[33,2954,1704],{},[10,2956,2957],{"id":2957},"使用建議",[2926,2959,2960,2963,2969,2972,2979],{},[21,2961,2962],{},"新代碼中，參數適配優先嚐試 Lambda。",[21,2964,2965,2966,1709],{},"讀 ROS2、Boost.Asio、舊項目代碼時，要能看懂 ",[33,2967,2968],{},"std::bind(&Class::method, this, _1, _2)",[21,2970,2971],{},"綁定成員函數時最先考慮對象生命週期。",[21,2973,2974,2975,1705,2977,1709],{},"需要引用語義時明確寫 ",[33,2976,1704],{},[33,2978,1708],{},[21,2980,2981,2982,2984],{},"不要為了使用 ",[33,2983,41],{}," 寫出難讀的佔位符組合，清晰比炫技重要。",[10,2986,2987],{"id":2987},"小結",[18,2989,2990,2995,3002,3008,3015,3021],{},[21,2991,2992,2994],{},[33,2993,5],{}," 用來固定參數、調整參數順序、綁定成員函數。",[21,2996,2997,57,2999,3001],{},[33,2998,56],{},[33,3000,60],{}," 表示調用新可調用對象時傳入的參數位置。",[21,3003,3004,3005,3007],{},"成員函數中可以把 ",[33,3006,1998],{}," 作為第二個參數，表示把成員函數綁定到當前對象。",[21,3009,3010,3012,3013,1709],{},[33,3011,41],{}," 默認拷貝綁定參數，需要引用時用 ",[33,3014,1704],{},[21,3016,3017,3018,3020],{},"現代 C++ 中很多 ",[33,3019,41],{}," 用法可以用 Lambda 替代。",[21,3022,3023,3024,3026],{},"理解 ",[33,3025,41],{}," 對閲讀 ROS2、Boost.Asio 和舊 C++ 項目很有幫助。",[3028,3029,3030],"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":163,"searchDepth":181,"depth":181,"links":3032},[3033,3034,3035,3044,3045,3046,3047,3048],{"id":12,"depth":181,"text":12},{"id":48,"depth":181,"text":48},{"id":151,"depth":181,"text":151,"children":3036},[3037,3038,3039,3040,3041,3042],{"id":155,"depth":189,"text":156},{"id":545,"depth":189,"text":546},{"id":829,"depth":189,"text":830},{"id":1239,"depth":189,"text":1240},{"id":1695,"depth":189,"text":1696},{"id":1994,"depth":189,"text":3043},"示例 6：在成員函數中使用 this 綁定當前對象",{"id":2752,"depth":181,"text":2752},{"id":2855,"depth":181,"text":2856},{"id":2924,"depth":181,"text":2924},{"id":2957,"depth":181,"text":2957},{"id":2987,"depth":181,"text":2987},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1300-std-bind","2000-1300","2023-10-05","wiki\u002F2023-10-05-cplusplus-jiao-xue","zh-hk:2023-10-05-cplusplus-jiao-xue","\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue","Cplusplus教学","md","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1300-std-bind",false,null,"zh-HK","zh-hk",{},{"title":5,"description":163},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1300-std-bind","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1300-std-bind","YfyOCl1OsjjDuS1KNHZRIJkPPw1WQ-mZeNFdFWFDZDE",[3068,3074,3079,3084,3089,3094,3099,3104,3109,3114,3119,3124,3129,3134,3139,3144,3149,3154,3159,3164,3169,3174,3179,3184,3189,3194,3199,3204,3209,3214,3219,3224,3229,3234,3239,3244,3249,3254,3259,3264,3268,3273,3278,3283,3288,3293,3298,3303,3308,3313,3318,3323,3324,3329,3334,3339,3344,3349,3354,3359,3364,3369,3374,3379,3384,3389,3394,3399,3404,3409,3414,3419,3424,3429,3434,3439,3444,3449,3454,3459,3464,3469,3474,3479],{"path":3069,"stem":3070,"title":3071,"date":3051,"chapterOrder":3072,"chapterDepth":3073,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0100-c-kai-fa-huan-jing-da-jian-yu-ce-shi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0100-C++开发环境搭建与测试","C++開發環境搭建與測試","0100",0,{"path":3075,"stem":3076,"title":3077,"date":3051,"chapterOrder":3078,"chapterDepth":3073,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0200-c-ji-chu-chu-shi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0200-C++基础初识","C++基礎初識","0200",{"path":3080,"stem":3081,"title":3082,"date":3051,"chapterOrder":3083,"chapterDepth":3073,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0300-shu-ju-lei-xing-yu-shu-ju-cun-fang","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0300-数据类型与数据存放","數據類型與數據存放","0300",{"path":3085,"stem":3086,"title":3087,"date":3051,"chapterOrder":3088,"chapterDepth":3073,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0400-shu-ru-shu-chu","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0400-输入输出","輸入輸出","0400",{"path":3090,"stem":3091,"title":3092,"date":3051,"chapterOrder":3093,"chapterDepth":3073,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0500-yun-suan-fu","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0500-运算符","運算符","0500",{"path":3095,"stem":3096,"title":3097,"date":3051,"chapterOrder":3098,"chapterDepth":3073,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0600-cheng-xu-liu-cheng-jie-gou","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0600-程序流程结构","程序流程結構","0600",{"path":3100,"stem":3101,"title":3102,"date":3051,"chapterOrder":3103,"chapterDepth":3073,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0700-shu-zu","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0700-数组","數組","0700",{"path":3105,"stem":3106,"title":3107,"date":3051,"chapterOrder":3108,"chapterDepth":3073,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0800-han-shu-yu-tou-wen-jian","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0800-函数与头文件","函數與頭文件","0800",{"path":3110,"stem":3111,"title":3112,"date":3051,"chapterOrder":3113,"chapterDepth":3073,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0900-zhi-zhen","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0900-指针","指針","0900",{"path":3115,"stem":3116,"title":3117,"date":3051,"chapterOrder":3118,"chapterDepth":3073,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1000-jie-gou-ti-yu-gong-yong-ti","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1000-结构体与共用体","結構體與共用體","1000",{"path":3120,"stem":3121,"title":3122,"date":3051,"chapterOrder":3123,"chapterDepth":3073,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1100-nei-cun-fen-qu-yu-sheng-ming-zhou-qi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1100-内存分区与生命周期","內存分區與生命週期","1100",{"path":3125,"stem":3126,"title":3127,"date":3051,"chapterOrder":3128,"chapterDepth":3073,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1200-yin-yong","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1200-引用","引用","1200",{"path":3130,"stem":3131,"title":3132,"date":3051,"chapterOrder":3133,"chapterDepth":3073,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1300-han-shu-ti-gao","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1300-函数提高","函數提高","1300",{"path":3135,"stem":3136,"title":3137,"date":3051,"chapterOrder":3138,"chapterDepth":3073,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1350-ming-ming-kong-jian","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1350-命名空间","命名空間","1350",{"path":3140,"stem":3141,"title":3142,"date":3051,"chapterOrder":3143,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0100-feng-zhuang","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0100-封装","封裝","1400-0100",{"path":3145,"stem":3146,"title":3147,"date":3051,"chapterOrder":3148,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0200-dui-xiang-chu-shi-hua-he-qing-li","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0200-对象初始化和清理","對象初始化和清理","1400-0200",{"path":3150,"stem":3151,"title":3152,"date":3051,"chapterOrder":3153,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0300-dui-xiang-mo-xing-yu-this-zhi-zhen","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0300-对象模型与this指针","對象模型與this指針","1400-0300",{"path":3155,"stem":3156,"title":3157,"date":3051,"chapterOrder":3158,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0400-you-yuan-yu-yun-suan-fu-zhong-zai","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0400-友元与运算符重载","友元與運算符重載","1400-0400",{"path":3160,"stem":3161,"title":3162,"date":3051,"chapterOrder":3163,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0500-ji-cheng","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0500-继承","繼承","1400-0500",{"path":3165,"stem":3166,"title":3167,"date":3051,"chapterOrder":3168,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0600-duo-tai","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0600-多态","多態","1400-0600",{"path":3170,"stem":3171,"title":3172,"date":3051,"chapterOrder":3173,"chapterDepth":3073,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-lei-he-dui-xiang","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-类和对象","類和對象","1400",{"path":3175,"stem":3176,"title":3177,"date":3051,"chapterOrder":3178,"chapterDepth":3073,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1450-han-shu-zhi-zhen","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1450-函数指针","函數指針","1450",{"path":3180,"stem":3181,"title":3182,"date":3051,"chapterOrder":3183,"chapterDepth":3073,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1500-wen-jian-cao-zuo","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1500-文件操作","文件操作","1500",{"path":3185,"stem":3186,"title":3187,"date":3051,"chapterOrder":3188,"chapterDepth":3073,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1600-yi-chang-chu-li-yu-cuo-wu-ma","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1600-异常处理与错误码","異常處理","1600",{"path":3190,"stem":3191,"title":3192,"date":3051,"chapterOrder":3193,"chapterDepth":3073,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1700-mu-ban","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1700-模板","模板","1700",{"path":3195,"stem":3196,"title":3197,"date":3051,"chapterOrder":3198,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0100-stl-chu-shi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0100-STL初识","STL初識","1800-0100",{"path":3200,"stem":3201,"title":3202,"date":3051,"chapterOrder":3203,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0200-std-array","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0200-std-array","std::array","1800-0200",{"path":3205,"stem":3206,"title":3207,"date":3051,"chapterOrder":3208,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0300-string-rong-qi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0300-string容器","string容器","1800-0300",{"path":3210,"stem":3211,"title":3212,"date":3051,"chapterOrder":3213,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0400-vector-rong-qi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0400-vector容器","vector 容器","1800-0400",{"path":3215,"stem":3216,"title":3217,"date":3051,"chapterOrder":3218,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0500-deque-rong-qi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0500-deque容器","deque 容器","1800-0500",{"path":3220,"stem":3221,"title":3222,"date":3051,"chapterOrder":3223,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0600-stack-rong-qi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0600-stack容器","stack 容器","1800-0600",{"path":3225,"stem":3226,"title":3227,"date":3051,"chapterOrder":3228,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0700-queue-rong-qi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0700-queue容器","queue 容器","1800-0700",{"path":3230,"stem":3231,"title":3232,"date":3051,"chapterOrder":3233,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0800-list-rong-qi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0800-list容器","list 容器","1800-0800",{"path":3235,"stem":3236,"title":3237,"date":3051,"chapterOrder":3238,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0900-set-rong-qi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0900-set容器","set \u002F multiset 容器","1800-0900",{"path":3240,"stem":3241,"title":3242,"date":3051,"chapterOrder":3243,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1000-map-rong-qi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-1000-map容器","map \u002F multimap 容器","1800-1000",{"path":3245,"stem":3246,"title":3247,"date":3051,"chapterOrder":3248,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1100-han-shu-dui-xiang-yu-wei-ci","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-1100-函数对象与谓词","函數對象與謂詞","1800-1100",{"path":3250,"stem":3251,"title":3252,"date":3051,"chapterOrder":3253,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1200-chang-yong-suan-fa","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-1200-常用算法","常用算法","1800-1200",{"path":3255,"stem":3256,"title":3257,"date":3051,"chapterOrder":3258,"chapterDepth":3073,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-stl-ti-gao-bian-cheng","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-STL提高编程","STL提高編程","1800",{"path":3260,"stem":3261,"title":3262,"date":3051,"chapterOrder":3263,"chapterDepth":3073,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1900-c-lei-xing-zhuan-huan","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1900-C++类型转换","C++類型轉換","1900",{"path":3265,"stem":3266,"title":2373,"date":3051,"chapterOrder":3267,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0100-auto","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0100-auto","2000-0100",{"path":3269,"stem":3270,"title":3271,"date":3051,"chapterOrder":3272,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0200-nullptr","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0200-nullptr","nullptr","2000-0200",{"path":3274,"stem":3275,"title":3276,"date":3051,"chapterOrder":3277,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0300-using","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0300-using","using","2000-0300",{"path":3279,"stem":3280,"title":3281,"date":3051,"chapterOrder":3282,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0400-enum-class","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0400-enum-class","enum class","2000-0400",{"path":3284,"stem":3285,"title":3286,"date":3051,"chapterOrder":3287,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0500-fan-wei-for-xun-huan","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0500-范围for循环","範圍 for 循環","2000-0500",{"path":3289,"stem":3290,"title":3291,"date":3051,"chapterOrder":3292,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0600-jie-gou-hua-bang-ding","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0600-结构化绑定","結構化綁定","2000-0600",{"path":3294,"stem":3295,"title":3296,"date":3051,"chapterOrder":3297,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0700-constexpr","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0700-constexpr","constexpr","2000-0700",{"path":3299,"stem":3300,"title":3301,"date":3051,"chapterOrder":3302,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0800-raii","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0800-RAII","RAII","2000-0800",{"path":3304,"stem":3305,"title":3306,"date":3051,"chapterOrder":3307,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0900-zhi-neng-zhi-zhen","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0900-智能指针","智能指針","2000-0900",{"path":3309,"stem":3310,"title":3311,"date":3051,"chapterOrder":3312,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1000-you-zhi-yin-yong-he-yi-dong-yu-yi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1000-右值引用和移动语义","右值引用和移動語義","2000-1000",{"path":3314,"stem":3315,"title":3316,"date":3051,"chapterOrder":3317,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1100-lambda-biao-da-shi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1100-Lambda表达式","Lambda 表達式","2000-1100",{"path":3319,"stem":3320,"title":3321,"date":3051,"chapterOrder":3322,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1200-std-function","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1200-std-function","std::function","2000-1200",{"path":3049,"stem":3065,"title":5,"date":3051,"chapterOrder":3050,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},{"path":3325,"stem":3326,"title":3327,"date":3051,"chapterOrder":3328,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1400-std-optional","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1400-std-optional","std::optional","2000-1400",{"path":3330,"stem":3331,"title":3332,"date":3051,"chapterOrder":3333,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1500-std-variant","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1500-std-variant","std::variant","2000-1500",{"path":3335,"stem":3336,"title":3337,"date":3051,"chapterOrder":3338,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1600-std-span","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1600-std-span","std::span","2000-1600",{"path":3340,"stem":3341,"title":3342,"date":3051,"chapterOrder":3343,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1700-std-format-print","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1700-std-format-print","std::format \u002F std::print","2000-1700",{"path":3345,"stem":3346,"title":3347,"date":3051,"chapterOrder":3348,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1800-std-chrono","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1800-std-chrono","std::chrono","2000-1800",{"path":3350,"stem":3351,"title":3352,"date":3051,"chapterOrder":3353,"chapterDepth":181,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0100-std-thread","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0100-std-thread","std::thread 與 join","2000-1900-0100",{"path":3355,"stem":3356,"title":3357,"date":3051,"chapterOrder":3358,"chapterDepth":181,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0200-mutex-lock-guard","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0200-mutex-lock-guard","mutex 與 lock_guard","2000-1900-0200",{"path":3360,"stem":3361,"title":3362,"date":3051,"chapterOrder":3363,"chapterDepth":181,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0300-std-atomic","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0300-std-atomic","std::atomic","2000-1900-0300",{"path":3365,"stem":3366,"title":3367,"date":3051,"chapterOrder":3368,"chapterDepth":181,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0400-condition-variable","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0400-condition-variable","condition_variable","2000-1900-0400",{"path":3370,"stem":3371,"title":3372,"date":3051,"chapterOrder":3373,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-bing-fa-bian-cheng","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-并发编程","併發編程","2000-1900",{"path":3375,"stem":3376,"title":3377,"date":3051,"chapterOrder":3378,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2000-std-filesystem","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-2000-std-filesystem","std::filesystem","2000-2000",{"path":3380,"stem":3381,"title":3382,"date":3051,"chapterOrder":3383,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2100-modules-jian-jie","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-2100-modules简介","modules 簡介","2000-2100",{"path":3385,"stem":3386,"title":3387,"date":3051,"chapterOrder":3388,"chapterDepth":3073,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-xian-dai-c","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-现代C++","現代C++","2000",{"path":3390,"stem":3391,"title":3392,"date":3051,"chapterOrder":3393,"chapterDepth":181,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0100-ding-shi-qi-yu-yi-bu-io","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0100-定时器与异步IO","定時器與異步 IO","2100-0100-0100",{"path":3395,"stem":3396,"title":3397,"date":3051,"chapterOrder":3398,"chapterDepth":181,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0200-boost-asio-ji-chu","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0200-Boost.Asio基础","Boost.Asio 基礎","2100-0100-0200",{"path":3400,"stem":3401,"title":3402,"date":3051,"chapterOrder":3403,"chapterDepth":181,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0300-chuan-kou-tong-xin","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0300-串口通信","串口通信","2100-0100-0300",{"path":3405,"stem":3406,"title":3407,"date":3051,"chapterOrder":3408,"chapterDepth":181,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0400-tcp-tong-xin","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0400-TCP通信","TCP 通信","2100-0100-0400",{"path":3410,"stem":3411,"title":3412,"date":3051,"chapterOrder":3413,"chapterDepth":181,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0500-udp-tong-xin","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0500-UDP通信","UDP 通信","2100-0100-0500",{"path":3415,"stem":3416,"title":3417,"date":3051,"chapterOrder":3418,"chapterDepth":181,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0600-ji-qi-ren-gong-cheng-xie-fa-yu-ros2-ji-cheng","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0600-机器人工程写法与ROS2集成","機器人工程寫法與 ROS2 集成","2100-0100-0600",{"path":3420,"stem":3421,"title":3422,"date":3051,"chapterOrder":3423,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-boost-asio-yi-bu-io-ku","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-Boost.Asio异步IO库","Boost.Asio異步IO庫","2100-0100",{"path":3425,"stem":3426,"title":3427,"date":3051,"chapterOrder":3428,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0200-eigen-xian-xing-dai-shu-ku","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0200-Eigen线性代数库","Eigen線性代數庫","2100-0200",{"path":3430,"stem":3431,"title":3432,"date":3051,"chapterOrder":3433,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0300-opencv-ji-suan-ji-shi-jue-ku","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0300-OpenCV计算机视觉库","OpenCV計算機視覺庫","2100-0300",{"path":3435,"stem":3436,"title":3437,"date":3051,"chapterOrder":3438,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0400-pcl-dian-yun-ku","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0400-PCL点云库","PCL點雲庫","2100-0400",{"path":3440,"stem":3441,"title":3442,"date":3051,"chapterOrder":3443,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0500-sophus-li-qun-li-dai-shu-ku","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0500-Sophus李群李代数库","Sophus 李羣李代數庫","2100-0500",{"path":3445,"stem":3446,"title":3447,"date":3051,"chapterOrder":3448,"chapterDepth":3073,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-chang-yong-ku","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-常用库","常用庫學習","2100",{"path":3450,"stem":3451,"title":3452,"date":3051,"chapterOrder":3453,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0100-cmakepresets-yu-gou-jian-an-zhuang","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0100-CMakePresets与构建安装","CMakePresets與構建安裝","2200-0100",{"path":3455,"stem":3456,"title":3457,"date":3051,"chapterOrder":3458,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0200-ding-ceng-cmake-yu-gong-gong-bian-yi-xuan-xiang","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0200-顶层CMake与公共编译选项","頂層CMake與公共編譯選項","2200-0200",{"path":3460,"stem":3461,"title":3462,"date":3051,"chapterOrder":3463,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0300-src-yu-lib-mo-kuai-cmake-xiang-jie","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0300-src与lib模块CMake详解","src與lib模塊CMake詳解","2200-0300",{"path":3465,"stem":3466,"title":3467,"date":3051,"chapterOrder":3468,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0400-di-san-fang-ku-yi-lai-xie-fa","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0400-第三方库依赖写法","第三方庫依賴寫法","2200-0400",{"path":3470,"stem":3471,"title":3472,"date":3051,"chapterOrder":3473,"chapterDepth":170,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0500-mu-ban-kuo-zhan-yu-chang-jian-wen-ti","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0500-模板扩展与常见问题","模板擴展與常見問題","2200-0500",{"path":3475,"stem":3476,"title":3477,"date":3051,"chapterOrder":3478,"chapterDepth":3073,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":3058},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-cmake-gong-cheng-mu-ban","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-CMake工程模板","CMake工程模板","2200",{"path":3054,"stem":3480,"title":3481,"date":3051,"chapterOrder":3059,"chapterDepth":3073,"docKey":3053,"docRoot":3054,"docTitle":3055,"isWikiDoc":200,"isWikiIndex":200},"_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002Findex","C\u002FC++教程",{"variants":3483},[3484,3487,3490,3491,3494],{"path":3485,"localeSlug":3486,"i18nKey":3057},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1300-std-bind","en-us",{"path":3488,"localeSlug":3489,"i18nKey":3057},"\u002Fzh-hant\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1300-std-bind","zh-hant",{"path":3049,"localeSlug":3061,"i18nKey":3057},{"path":3492,"localeSlug":3493,"i18nKey":3057},"\u002Fzh-tw\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1300-std-bind","zh-tw",{"path":3495,"localeSlug":3496,"i18nKey":3057},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1300-std-bind","zh-cn",[3485,3064,3488,3064,3049,3064,3492,3064,3495,3064],1788531375016]