[{"data":1,"prerenderedAt":2712},["ShallowReactive",2],{"wiki-page-/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-13-std-bind":3,"wiki-doc-items-/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-13-std-bind":2289,"language-switcher-data-/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-13-std-bind":2696,"wiki-i18n-paths-/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-13-std-bind":2711},{"id":4,"title":5,"body":6,"canonicalPath":2271,"chapter":2272,"chapterSort":2273,"date":2274,"description":163,"docI18nKey":2275,"docKey":2276,"docRoot":2277,"docTitle":2278,"extension":2279,"i18nKey":2280,"isBlogPost":2281,"isWikiDoc":200,"isWikiIndex":2281,"layout":2282,"legacyPath":2283,"locale":2284,"localeSlug":2285,"meta":2286,"navigation":200,"path":2271,"seo":2287,"sourcePath":2283,"sourceStem":2280,"stem":2280,"wikiDepth":170,"__hash__":2288},"content/wiki/2023-10-05-Cplusplus教学/ch18-13-std-bind.md","std::bind",{"type":7,"value":8,"toc":2255},"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,1995,2083,2087,2147,2152,2155,2185,2188,2215,2218,2251],[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    // 程序从 main 函数开始执行，下面的语句会按顺序运行。\n    using std::placeholders::_1;\n    using std::placeholders::_2;\n\n    print_student(\"Alice\", 20, 95);\n\n    // 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","    // 程序从 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},"    // 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 \" / \" \u003C\u003C b \u003C\u003C \" = \" \u003C\u003C (a / b) \u003C\u003C \"\\n\";\n}\n\nint main()\n{\n    // 程序从 main 函数开始执行，下面的语句会按顺序运行。\n    using std::placeholders::_1;\n    using std::placeholders::_2;\n\n    divide(10, 2);\n\n    // 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}," \" / \"",[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},"/",[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 / 2 = 5\n10 / 2 = 5\n10 / 2 = 5\n20 / 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    // 程序从 main 函数开始执行，下面的语句会按顺序运行。\n    using std::placeholders::_1;\n    using std::placeholders::_2;\n\n    Printer printer(\"LOG\");\n\n    // 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    // 程序从 main 函数开始执行，下面的语句会按顺序运行。\n    using std::placeholders::_1;\n    using std::placeholders::_2;\n\n    // 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    // 程序从 main 函数开始执行，下面的语句会按顺序运行。\n    int total = 0;\n\n    // 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},[10,1993,1994],{"id":1994},"关键语法解释",[79,1996,1997,2009],{},[82,1998,1999],{},[85,2000,2001,2003,2006],{},[88,2002,91],{"align":90},[88,2004,2005],{"align":90},"说明",[88,2007,2008],{"align":90},"注意事项",[96,2010,2011,2025,2037,2051,2064],{},[85,2012,2013,2017,2020],{},[101,2014,2015],{"align":90},[33,2016,56],{},[101,2018,2019],{"align":90},"调用新函数时传入的第一个参数",[101,2021,2022,2023],{"align":90},"来自 ",[33,2024,76],{},[85,2026,2027,2031,2034],{},[101,2028,2029],{"align":90},[33,2030,60],{},[101,2032,2033],{"align":90},"调用新函数时传入的第二个参数",[101,2035,2036],{"align":90},"可以用来调整顺序",[85,2038,2039,2042,2048],{},[101,2040,2041],{"align":90},"固定值",[101,2043,2044,2045,2047],{"align":90},"直接写在 ",[33,2046,41],{}," 参数里",[101,2049,2050],{"align":90},"默认会被拷贝保存",[85,2052,2053,2058,2061],{},[101,2054,2055],{"align":90},[33,2056,2057],{},"&Class::method",[101,2059,2060],{"align":90},"成员函数指针",[101,2062,2063],{"align":90},"后面还要绑定对象",[85,2065,2066,2071,2077],{},[101,2067,2068],{"align":90},[33,2069,2070],{},"std::ref(x)",[101,2072,2073,2074],{"align":90},"按引用绑定 ",[33,2075,2076],{},"x",[101,2078,2079,2080,2082],{"align":90},"不写 ",[33,2081,1704],{}," 通常会拷贝",[10,2084,2086],{"id":2085},"bind-和-lambda-怎么选","bind 和 Lambda 怎么选",[79,2088,2089,2099],{},[82,2090,2091],{},[85,2092,2093,2096],{},[88,2094,2095],{"align":90},"场景",[88,2097,2098],{"align":90},"推荐",[96,2100,2101,2112,2120,2130,2137],{},[85,2102,2103,2106],{},[101,2104,2105],{"align":90},"简单固定参数",[101,2107,2108,2109,2111],{"align":90},"Lambda 或 ",[33,2110,41],{}," 都可以",[85,2113,2114,2117],{},[101,2115,2116],{"align":90},"参数关系需要读得很清楚",[101,2118,2119],{"align":90},"Lambda",[85,2121,2122,2125],{},[101,2123,2124],{"align":90},"绑定成员函数给旧接口",[101,2126,2127,2129],{"align":90},[33,2128,41],{}," 很常见，也可以用 Lambda",[85,2131,2132,2135],{},[101,2133,2134],{"align":90},"需要复杂逻辑、条件判断",[101,2136,2119],{"align":90},[85,2138,2139,2142],{},[101,2140,2141],{"align":90},"阅读旧代码或 ROS2/Boost.Asio 示例",[101,2143,2144,2145],{"align":90},"必须看懂 ",[33,2146,41],{},[14,2148,2149,2150,1709],{},"一句话：新代码优先考虑 Lambda；遇到已有接口适配、旧项目代码、成员函数回调时，要能熟练读懂 ",[33,2151,5],{},[10,2153,2154],{"id":2154},"常见错误",[2156,2157,2158,2163,2171,2174,2177],"ol",{},[21,2159,2160,2161,1709],{},"忘记占位符来自 ",[33,2162,76],{},[21,2164,2165,2166,57,2168,2170],{},"把 ",[33,2167,56],{},[33,2169,60],{}," 的顺序看反，导致实参顺序错误。",[21,2172,2173],{},"绑定成员函数时忘记绑定对象。",[21,2175,2176],{},"绑定对象指针后，对象先被销毁，回调还在使用。",[21,2178,2179,2180,2182,2183,1709],{},"以为 ",[33,2181,41],{}," 默认按引用保存参数。默认是拷贝，需要引用时用 ",[33,2184,1704],{},[10,2186,2187],{"id":2187},"使用建议",[2156,2189,2190,2193,2199,2202,2209],{},[21,2191,2192],{},"新代码中，参数适配优先尝试 Lambda。",[21,2194,2195,2196,1709],{},"读 ROS2、Boost.Asio、旧项目代码时，要能看懂 ",[33,2197,2198],{},"std::bind(&Class::method, this, _1, _2)",[21,2200,2201],{},"绑定成员函数时最先考虑对象生命周期。",[21,2203,2204,2205,1705,2207,1709],{},"需要引用语义时明确写 ",[33,2206,1704],{},[33,2208,1708],{},[21,2210,2211,2212,2214],{},"不要为了使用 ",[33,2213,41],{}," 写出难读的占位符组合，清晰比炫技重要。",[10,2216,2217],{"id":2217},"小结",[18,2219,2220,2225,2232,2239,2245],{},[21,2221,2222,2224],{},[33,2223,5],{}," 用来固定参数、调整参数顺序、绑定成员函数。",[21,2226,2227,57,2229,2231],{},[33,2228,56],{},[33,2230,60],{}," 表示调用新可调用对象时传入的参数位置。",[21,2233,2234,2236,2237,1709],{},[33,2235,41],{}," 默认拷贝绑定参数，需要引用时用 ",[33,2238,1704],{},[21,2240,2241,2242,2244],{},"现代 C++ 中很多 ",[33,2243,41],{}," 用法可以用 Lambda 替代。",[21,2246,2247,2248,2250],{},"理解 ",[33,2249,41],{}," 对阅读 ROS2、Boost.Asio 和旧 C++ 项目很有帮助。",[2252,2253,2254],"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":2256},[2257,2258,2259,2266,2267,2268,2269,2270],{"id":12,"depth":181,"text":12},{"id":48,"depth":181,"text":48},{"id":151,"depth":181,"text":151,"children":2260},[2261,2262,2263,2264,2265],{"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":181,"text":1994},{"id":2085,"depth":181,"text":2086},{"id":2154,"depth":181,"text":2154},{"id":2187,"depth":181,"text":2187},{"id":2217,"depth":181,"text":2217},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-13-std-bind","18.13",18130000,"2023-10-05","wiki/2023-10-05-cplusplus-jiao-xue","zh-cn:2023-10-05-cplusplus-jiao-xue","/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue","Cplusplus教学","md","wiki/2023-10-05-Cplusplus教学/ch18-13-std-bind",false,null,"/wiki/2023-10-05-cplusplus-jiao-xue/ch18-13-std-bind","zh-CN","zh-cn",{},{"title":5,"description":163},"v8gw2U2PE1mNIvbpuiZMml-Mg8fkRf4NwzCUCBksgRo",[2290,2296,2301,2307,2313,2319,2325,2331,2337,2343,2349,2355,2361,2367,2373,2379,2385,2391,2397,2403,2409,2415,2421,2427,2433,2439,2445,2451,2452,2458,2464,2470,2476,2482,2488,2494,2500,2506,2512,2518,2524,2530,2536,2542,2548,2554,2560,2566,2572,2578,2584,2590,2596,2602,2608,2614,2620,2626,2632,2638,2644,2650,2655,2660,2665,2670,2676,2681,2686,2692],{"path":2291,"stem":2292,"title":2293,"date":2274,"chapter":2294,"chapterSort":2295,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch1-c-ji-chu-chu-shi","wiki/2023-10-05-Cplusplus教学/ch1-C++基础初识","C++基础初识","1",1000000,{"path":2297,"stem":2298,"title":2299,"date":2274,"chapter":115,"chapterSort":2300,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch10-nei-cun-fen-qu-yu-sheng-ming-zhou-qi","wiki/2023-10-05-Cplusplus教学/ch10-内存分区与生命周期","内存分区与生命周期",10000000,{"path":2302,"stem":2303,"title":2304,"date":2274,"chapter":2305,"chapterSort":2306,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch11-yin-yong","wiki/2023-10-05-Cplusplus教学/ch11-引用","引用","11",11000000,{"path":2308,"stem":2309,"title":2310,"date":2274,"chapter":2311,"chapterSort":2312,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch12-han-shu-ti-gao-yu-ming-ming-kong-jian","wiki/2023-10-05-Cplusplus教学/ch12-函数提高与命名空间","函数提高与命名空间","12",12000000,{"path":2314,"stem":2315,"title":2316,"date":2274,"chapter":2317,"chapterSort":2318,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-1-feng-zhuang","wiki/2023-10-05-Cplusplus教学/ch13-1-封装","封装","13.1",13010000,{"path":2320,"stem":2321,"title":2322,"date":2274,"chapter":2323,"chapterSort":2324,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-2-dui-xiang-chu-shi-hua-he-qing-li","wiki/2023-10-05-Cplusplus教学/ch13-2-对象初始化和清理","对象初始化和清理","13.2",13020000,{"path":2326,"stem":2327,"title":2328,"date":2274,"chapter":2329,"chapterSort":2330,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-3-dui-xiang-mo-xing-yu-this-zhi-zhen","wiki/2023-10-05-Cplusplus教学/ch13-3-对象模型与this指针","对象模型与this指针","13.3",13030000,{"path":2332,"stem":2333,"title":2334,"date":2274,"chapter":2335,"chapterSort":2336,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-4-you-yuan-yu-yun-suan-fu-zhong-zai","wiki/2023-10-05-Cplusplus教学/ch13-4-友元与运算符重载","友元与运算符重载","13.4",13040000,{"path":2338,"stem":2339,"title":2340,"date":2274,"chapter":2341,"chapterSort":2342,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-5-ji-cheng","wiki/2023-10-05-Cplusplus教学/ch13-5-继承","继承","13.5",13050000,{"path":2344,"stem":2345,"title":2346,"date":2274,"chapter":2347,"chapterSort":2348,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-6-duo-tai","wiki/2023-10-05-Cplusplus教学/ch13-6-多态","多态","13.6",13060000,{"path":2350,"stem":2351,"title":2352,"date":2274,"chapter":2353,"chapterSort":2354,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-lei-he-dui-xiang","wiki/2023-10-05-Cplusplus教学/ch13-类和对象","类和对象","13",13000000,{"path":2356,"stem":2357,"title":2358,"date":2274,"chapter":2359,"chapterSort":2360,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch14-wen-jian-cao-zuo","wiki/2023-10-05-Cplusplus教学/ch14-文件操作","文件操作","14",14000000,{"path":2362,"stem":2363,"title":2364,"date":2274,"chapter":2365,"chapterSort":2366,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch15-mu-ban","wiki/2023-10-05-Cplusplus教学/ch15-模板","模板","15",15000000,{"path":2368,"stem":2369,"title":2370,"date":2274,"chapter":2371,"chapterSort":2372,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-1-stl-chu-shi","wiki/2023-10-05-Cplusplus教学/ch16-1-STL初识","STL初识","16.1",16010000,{"path":2374,"stem":2375,"title":2376,"date":2274,"chapter":2377,"chapterSort":2378,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-2-std-array","wiki/2023-10-05-Cplusplus教学/ch16-2-std-array","std::array","16.2",16020000,{"path":2380,"stem":2381,"title":2382,"date":2274,"chapter":2383,"chapterSort":2384,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-3-string-rong-qi","wiki/2023-10-05-Cplusplus教学/ch16-3-string容器","string容器","16.3",16030000,{"path":2386,"stem":2387,"title":2388,"date":2274,"chapter":2389,"chapterSort":2390,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-4-vector-yu-deque-rong-qi","wiki/2023-10-05-Cplusplus教学/ch16-4-vector与deque容器","vector与deque容器","16.4",16040000,{"path":2392,"stem":2393,"title":2394,"date":2274,"chapter":2395,"chapterSort":2396,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-5-stack-queue-list-rong-qi","wiki/2023-10-05-Cplusplus教学/ch16-5-stack-queue-list容器","stack / queue / list 容器","16.5",16050000,{"path":2398,"stem":2399,"title":2400,"date":2274,"chapter":2401,"chapterSort":2402,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-6-set-map-rong-qi","wiki/2023-10-05-Cplusplus教学/ch16-6-set-map容器","set / map 容器","16.6",16060000,{"path":2404,"stem":2405,"title":2406,"date":2274,"chapter":2407,"chapterSort":2408,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-7-han-shu-dui-xiang-yu-wei-ci","wiki/2023-10-05-Cplusplus教学/ch16-7-函数对象与谓词","函数对象与谓词","16.7",16070000,{"path":2410,"stem":2411,"title":2412,"date":2274,"chapter":2413,"chapterSort":2414,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-8-chang-yong-suan-fa","wiki/2023-10-05-Cplusplus教学/ch16-8-常用算法","常用算法","16.8",16080000,{"path":2416,"stem":2417,"title":2418,"date":2274,"chapter":2419,"chapterSort":2420,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-stl-ti-gao-bian-cheng","wiki/2023-10-05-Cplusplus教学/ch16-STL提高编程","STL提高编程","16",16000000,{"path":2422,"stem":2423,"title":2424,"date":2274,"chapter":2425,"chapterSort":2426,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch17-c-lei-xing-zhuan-huan","wiki/2023-10-05-Cplusplus教学/ch17-C++类型转换","C++类型转换","17",17000000,{"path":2428,"stem":2429,"title":2430,"date":2274,"chapter":2431,"chapterSort":2432,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-1-auto","wiki/2023-10-05-Cplusplus教学/ch18-1-auto","auto","18.1",18010000,{"path":2434,"stem":2435,"title":2436,"date":2274,"chapter":2437,"chapterSort":2438,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-10-you-zhi-yin-yong-he-yi-dong-yu-yi","wiki/2023-10-05-Cplusplus教学/ch18-10-右值引用和移动语义","右值引用和移动语义","18.10",18100000,{"path":2440,"stem":2441,"title":2442,"date":2274,"chapter":2443,"chapterSort":2444,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-11-lambda-biao-da-shi","wiki/2023-10-05-Cplusplus教学/ch18-11-Lambda表达式","Lambda 表达式","18.11",18110000,{"path":2446,"stem":2447,"title":2448,"date":2274,"chapter":2449,"chapterSort":2450,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-12-std-function","wiki/2023-10-05-Cplusplus教学/ch18-12-std-function","std::function","18.12",18120000,{"path":2271,"stem":2280,"title":5,"date":2274,"chapter":2272,"chapterSort":2273,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},{"path":2453,"stem":2454,"title":2455,"date":2274,"chapter":2456,"chapterSort":2457,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-14-std-optional","wiki/2023-10-05-Cplusplus教学/ch18-14-std-optional","std::optional","18.14",18140000,{"path":2459,"stem":2460,"title":2461,"date":2274,"chapter":2462,"chapterSort":2463,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-15-std-variant","wiki/2023-10-05-Cplusplus教学/ch18-15-std-variant","std::variant","18.15",18150000,{"path":2465,"stem":2466,"title":2467,"date":2274,"chapter":2468,"chapterSort":2469,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-16-std-span","wiki/2023-10-05-Cplusplus教学/ch18-16-std-span","std::span","18.16",18160000,{"path":2471,"stem":2472,"title":2473,"date":2274,"chapter":2474,"chapterSort":2475,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-17-std-format-print","wiki/2023-10-05-Cplusplus教学/ch18-17-std-format-print","std::format / std::print","18.17",18170000,{"path":2477,"stem":2478,"title":2479,"date":2274,"chapter":2480,"chapterSort":2481,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-18-std-chrono","wiki/2023-10-05-Cplusplus教学/ch18-18-std-chrono","std::chrono","18.18",18180000,{"path":2483,"stem":2484,"title":2485,"date":2274,"chapter":2486,"chapterSort":2487,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-1-std-thread","wiki/2023-10-05-Cplusplus教学/ch18-19-1-std-thread","std::thread 与 join","18.19.1",18190100,{"path":2489,"stem":2490,"title":2491,"date":2274,"chapter":2492,"chapterSort":2493,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-2-mutex-lock-guard","wiki/2023-10-05-Cplusplus教学/ch18-19-2-mutex-lock-guard","mutex 与 lock_guard","18.19.2",18190200,{"path":2495,"stem":2496,"title":2497,"date":2274,"chapter":2498,"chapterSort":2499,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-3-std-atomic","wiki/2023-10-05-Cplusplus教学/ch18-19-3-std-atomic","std::atomic","18.19.3",18190300,{"path":2501,"stem":2502,"title":2503,"date":2274,"chapter":2504,"chapterSort":2505,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-4-condition-variable","wiki/2023-10-05-Cplusplus教学/ch18-19-4-condition-variable","condition_variable","18.19.4",18190400,{"path":2507,"stem":2508,"title":2509,"date":2274,"chapter":2510,"chapterSort":2511,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-bing-fa-bian-cheng","wiki/2023-10-05-Cplusplus教学/ch18-19-并发编程","并发编程","18.19",18190000,{"path":2513,"stem":2514,"title":2515,"date":2274,"chapter":2516,"chapterSort":2517,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-2-nullptr","wiki/2023-10-05-Cplusplus教学/ch18-2-nullptr","nullptr","18.2",18020000,{"path":2519,"stem":2520,"title":2521,"date":2274,"chapter":2522,"chapterSort":2523,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-20-std-filesystem","wiki/2023-10-05-Cplusplus教学/ch18-20-std-filesystem","std::filesystem","18.20",18200000,{"path":2525,"stem":2526,"title":2527,"date":2274,"chapter":2528,"chapterSort":2529,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-21-modules-jian-jie","wiki/2023-10-05-Cplusplus教学/ch18-21-modules简介","modules 简介","18.21",18210000,{"path":2531,"stem":2532,"title":2533,"date":2274,"chapter":2534,"chapterSort":2535,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-3-using","wiki/2023-10-05-Cplusplus教学/ch18-3-using","using","18.3",18030000,{"path":2537,"stem":2538,"title":2539,"date":2274,"chapter":2540,"chapterSort":2541,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-4-enum-class","wiki/2023-10-05-Cplusplus教学/ch18-4-enum-class","enum class","18.4",18040000,{"path":2543,"stem":2544,"title":2545,"date":2274,"chapter":2546,"chapterSort":2547,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-5-fan-wei-for-xun-huan","wiki/2023-10-05-Cplusplus教学/ch18-5-范围for循环","范围 for 循环","18.5",18050000,{"path":2549,"stem":2550,"title":2551,"date":2274,"chapter":2552,"chapterSort":2553,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-6-jie-gou-hua-bang-ding","wiki/2023-10-05-Cplusplus教学/ch18-6-结构化绑定","结构化绑定","18.6",18060000,{"path":2555,"stem":2556,"title":2557,"date":2274,"chapter":2558,"chapterSort":2559,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-7-constexpr","wiki/2023-10-05-Cplusplus教学/ch18-7-constexpr","constexpr","18.7",18070000,{"path":2561,"stem":2562,"title":2563,"date":2274,"chapter":2564,"chapterSort":2565,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-8-raii","wiki/2023-10-05-Cplusplus教学/ch18-8-RAII","RAII","18.8",18080000,{"path":2567,"stem":2568,"title":2569,"date":2274,"chapter":2570,"chapterSort":2571,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-9-zhi-neng-zhi-zhen","wiki/2023-10-05-Cplusplus教学/ch18-9-智能指针","智能指针","18.9",18090000,{"path":2573,"stem":2574,"title":2575,"date":2274,"chapter":2576,"chapterSort":2577,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-xian-dai-c","wiki/2023-10-05-Cplusplus教学/ch18-现代C++","现代C++","18",18000000,{"path":2579,"stem":2580,"title":2581,"date":2274,"chapter":2582,"chapterSort":2583,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-1-ding-shi-qi-yu-yi-bu-io","wiki/2023-10-05-Cplusplus教学/ch19-1-1-定时器与异步IO","定时器与异步 IO","19.1.1",19010100,{"path":2585,"stem":2586,"title":2587,"date":2274,"chapter":2588,"chapterSort":2589,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-2-boost-asio-ji-chu","wiki/2023-10-05-Cplusplus教学/ch19-1-2-Boost.Asio基础","Boost.Asio 基础","19.1.2",19010200,{"path":2591,"stem":2592,"title":2593,"date":2274,"chapter":2594,"chapterSort":2595,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-3-chuan-kou-tong-xin","wiki/2023-10-05-Cplusplus教学/ch19-1-3-串口通信","串口通信","19.1.3",19010300,{"path":2597,"stem":2598,"title":2599,"date":2274,"chapter":2600,"chapterSort":2601,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-4-tcp-tong-xin","wiki/2023-10-05-Cplusplus教学/ch19-1-4-TCP通信","TCP 通信","19.1.4",19010400,{"path":2603,"stem":2604,"title":2605,"date":2274,"chapter":2606,"chapterSort":2607,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-5-udp-tong-xin","wiki/2023-10-05-Cplusplus教学/ch19-1-5-UDP通信","UDP 通信","19.1.5",19010500,{"path":2609,"stem":2610,"title":2611,"date":2274,"chapter":2612,"chapterSort":2613,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-6-ji-qi-ren-gong-cheng-xie-fa-yu-ros2-ji-cheng","wiki/2023-10-05-Cplusplus教学/ch19-1-6-机器人工程写法与ROS2集成","机器人工程写法与 ROS2 集成","19.1.6",19010600,{"path":2615,"stem":2616,"title":2617,"date":2274,"chapter":2618,"chapterSort":2619,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-boost-asio-yi-bu-io-ku","wiki/2023-10-05-Cplusplus教学/ch19-1-Boost.Asio异步IO库","Boost.Asio异步IO库","19.1",19010000,{"path":2621,"stem":2622,"title":2623,"date":2274,"chapter":2624,"chapterSort":2625,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-2-eigen-xian-xing-dai-shu-ku","wiki/2023-10-05-Cplusplus教学/ch19-2-Eigen线性代数库","Eigen线性代数库","19.2",19020000,{"path":2627,"stem":2628,"title":2629,"date":2274,"chapter":2630,"chapterSort":2631,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-3-opencv-ji-suan-ji-shi-jue-ku","wiki/2023-10-05-Cplusplus教学/ch19-3-OpenCV计算机视觉库","OpenCV计算机视觉库","19.3",19030000,{"path":2633,"stem":2634,"title":2635,"date":2274,"chapter":2636,"chapterSort":2637,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-4-pcl-dian-yun-ku","wiki/2023-10-05-Cplusplus教学/ch19-4-PCL点云库","PCL点云库","19.4",19040000,{"path":2639,"stem":2640,"title":2641,"date":2274,"chapter":2642,"chapterSort":2643,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-5-sophus-li-qun-li-dai-shu-ku","wiki/2023-10-05-Cplusplus教学/ch19-5-Sophus李群李代数库","Sophus 李群李代数库","19.5",19050000,{"path":2645,"stem":2646,"title":2647,"date":2274,"chapter":2648,"chapterSort":2649,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-chang-yong-ku","wiki/2023-10-05-Cplusplus教学/ch19-常用库","常用库学习","19",19000000,{"path":2651,"stem":2652,"title":2653,"date":2274,"chapter":710,"chapterSort":2654,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch2-shu-ju-lei-xing-yu-shu-ju-cun-fang","wiki/2023-10-05-Cplusplus教学/ch2-数据类型与数据存放","数据类型与数据存放",2000000,{"path":2656,"stem":2657,"title":2658,"date":2274,"chapter":1471,"chapterSort":2659,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch3-shu-ru-shu-chu","wiki/2023-10-05-Cplusplus教学/ch3-输入输出","输入输出",3000000,{"path":2661,"stem":2662,"title":2663,"date":2274,"chapter":1476,"chapterSort":2664,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch4-yun-suan-fu","wiki/2023-10-05-Cplusplus教学/ch4-运算符","运算符",4000000,{"path":2666,"stem":2667,"title":2668,"date":2274,"chapter":1861,"chapterSort":2669,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch5-cheng-xu-liu-cheng-jie-gou","wiki/2023-10-05-Cplusplus教学/ch5-程序流程结构","程序流程结构",5000000,{"path":2671,"stem":2672,"title":2673,"date":2274,"chapter":2674,"chapterSort":2675,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch6-shu-zu","wiki/2023-10-05-Cplusplus教学/ch6-数组","数组","6",6000000,{"path":2677,"stem":2678,"title":2679,"date":2274,"chapter":1133,"chapterSort":2680,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch7-han-shu-yu-tou-wen-jian","wiki/2023-10-05-Cplusplus教学/ch7-函数与头文件","函数与头文件",7000000,{"path":2682,"stem":2683,"title":2684,"date":2274,"chapter":1190,"chapterSort":2685,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch8-zhi-zhen","wiki/2023-10-05-Cplusplus教学/ch8-指针","指针",8000000,{"path":2687,"stem":2688,"title":2689,"date":2274,"chapter":2690,"chapterSort":2691,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":2281},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch9-jie-gou-ti-yu-gong-yong-ti","wiki/2023-10-05-Cplusplus教学/ch9-结构体与共用体","结构体与共用体","9",9000000,{"path":2277,"stem":2693,"title":2694,"date":2274,"chapter":2282,"chapterSort":2695,"docKey":2276,"docRoot":2277,"docTitle":2278,"isWikiDoc":200,"isWikiIndex":200},"wiki/2023-10-05-Cplusplus教学/index","C/C++教程",0,{"variants":2697},[2698,2701,2704,2707,2710],{"path":2699,"localeSlug":2700,"i18nKey":2280},"/en-us/wiki/2023-10-05-cplusplus-jiao-xue/ch18-13-std-bind","en-us",{"path":2702,"localeSlug":2703,"i18nKey":2280},"/zh-hant/wiki/2023-10-05-cplusplus-jiao-xue/ch18-13-std-bind","zh-hant",{"path":2705,"localeSlug":2706,"i18nKey":2280},"/zh-hk/wiki/2023-10-05-cplusplus-jiao-xue/ch18-13-std-bind","zh-hk",{"path":2708,"localeSlug":2709,"i18nKey":2280},"/zh-tw/wiki/2023-10-05-cplusplus-jiao-xue/ch18-13-std-bind","zh-tw",{"path":2271,"localeSlug":2285,"i18nKey":2280},[2699,2283,2702,2283,2705,2283,2708,2283,2271,2283],1780663036611]