[{"data":1,"prerenderedAt":2927},["ShallowReactive",2],{"wiki-page-/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-6-jie-gou-hua-bang-ding":3,"wiki-doc-items-/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-6-jie-gou-hua-bang-ding":2502,"language-switcher-data-/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-6-jie-gou-hua-bang-ding":2911,"wiki-i18n-paths-/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-6-jie-gou-hua-bang-ding":2926},{"id":4,"title":5,"body":6,"canonicalPath":2484,"chapter":2485,"chapterSort":2486,"date":2487,"description":81,"docI18nKey":2488,"docKey":2489,"docRoot":2490,"docTitle":2491,"extension":2492,"i18nKey":2493,"isBlogPost":2494,"isWikiDoc":250,"isWikiIndex":2494,"layout":2495,"legacyPath":2496,"locale":2497,"localeSlug":2498,"meta":2499,"navigation":250,"path":2484,"seo":2500,"sourcePath":2496,"sourceStem":2493,"stem":2493,"wikiDepth":88,"__hash__":2501},"content/wiki/2023-10-05-Cplusplus教学/ch18-6-结构化绑定.md","结构化绑定",{"type":7,"value":8,"toc":2461},"minimark",[9,13,37,45,48,51,55,58,61,72,75,140,143,214,217,222,591,597,605,609,925,929,935,939,1327,1331,1337,1341,1707,1711,1717,1719,1722,1725,1835,1846,1849,1853,2171,2175,2181,2196,2199,2204,2246,2249,2254,2305,2308,2319,2363,2369,2372,2428,2431,2457],[10,11,12],"h2",{"id":12},"本节解决什么问题",[14,15,16,17,21,22,25,26,29,30,21,33,36],"p",{},"当函数需要返回多个值（如成功标志 + 数据），或者遍历 map 时需要同时拿到 key 和 value，在 C++17 之前需要借助 ",[18,19,20],"code",{},"std::pair"," / ",[18,23,24],{},"std::tuple"," + ",[18,27,28],{},"std::get\u003C>()"," 或 ",[18,31,32],{},".first",[18,34,35],{},".second","，代码冗长且不易读。",[14,38,39,40,44],{},"结构化绑定让你可以",[41,42,43],"strong",{},"一行语句把复合类型（pair、tuple、结构体）分解成独立的变量","，代码清晰很多。",[10,46,47],{"id":47},"这个特性是什么",[14,49,50],{},"结构化绑定（Structured Bindings）是 C++17 引入的语法，允许你将一个结构体、pair、tuple 或数组的元素\"绑定\"到独立的变量名上。",[10,52,54],{"id":53},"c-标准版本","C++ 标准版本",[14,56,57],{},"C++17",[10,59,60],{"id":60},"需要的头文件",[14,62,63,64,67,68,71],{},"不需要额外头文件。结构化绑定是语言特性。如果用于 tuple 需要 ",[18,65,66],{},"\u003Ctuple>","，用于 pair 需要 ",[18,69,70],{},"\u003Cutility>","。",[10,73,74],{"id":74},"基本语法",[76,77,82],"pre",{"className":78,"code":79,"language":80,"meta":81,"style":81},"language-cpp shiki shiki-themes github-light github-dark","auto [变量1, 变量2, ...] = 表达式;        // 值拷贝绑定\nauto& [变量1, 变量2, ...] = 表达式;       // 引用绑定（可修改原值）\nconst auto& [变量1, 变量2, ...] = 表达式;  // 只读引用绑定\n","cpp","",[18,83,84,107,122],{"__ignoreMap":81},[85,86,89,93,97,100,103],"span",{"class":87,"line":88},"line",1,[85,90,92],{"class":91},"szBVR","auto",[85,94,96],{"class":95},"sVt8B"," [变量1, 变量2, ...] ",[85,98,99],{"class":91},"=",[85,101,102],{"class":95}," 表达式;",[85,104,106],{"class":105},"sJ8bj","        // 值拷贝绑定\n",[85,108,110,113,115,117,119],{"class":87,"line":109},2,[85,111,112],{"class":91},"auto&",[85,114,96],{"class":95},[85,116,99],{"class":91},[85,118,102],{"class":95},[85,120,121],{"class":105},"       // 引用绑定（可修改原值）\n",[85,123,125,128,131,133,135,137],{"class":87,"line":124},3,[85,126,127],{"class":91},"const",[85,129,130],{"class":91}," auto&",[85,132,96],{"class":95},[85,134,99],{"class":91},[85,136,102],{"class":95},[85,138,139],{"class":105},"  // 只读引用绑定\n",[10,141,142],{"id":142},"常用用法",[144,145,146,160],"table",{},[147,148,149],"thead",{},[150,151,152,157],"tr",{},[153,154,156],"th",{"align":155},"left","用法",[153,158,159],{"align":155},"说明",[161,162,163,174,184,194,204],"tbody",{},[150,164,165,171],{},[166,167,168],"td",{"align":155},[18,169,170],{},"auto [x, y] = pair",[166,172,173],{"align":155},"解包 pair",[150,175,176,181],{},[166,177,178],{"align":155},[18,179,180],{},"auto [a, b, c] = std::tuple\u003C...>(...)",[166,182,183],{"align":155},"解包 tuple",[150,185,186,191],{},[166,187,188],{"align":155},[18,189,190],{},"auto [x, y, z] = struct_obj",[166,192,193],{"align":155},"解包结构体（按成员顺序）",[150,195,196,201],{},[166,197,198],{"align":155},[18,199,200],{},"for (auto& [k, v] : map)",[166,202,203],{"align":155},"遍历 map 时解包 key/value",[150,205,206,211],{},[166,207,208],{"align":155},[18,209,210],{},"auto [it, ok] = map.insert(...)",[166,212,213],{"align":155},"解包 insert 返回的 pair\u003Citerator, bool>",[10,215,216],{"id":216},"示例代码",[218,219,221],"h3",{"id":220},"示例-1函数返回-pair用结构化绑定解包","示例 1：函数返回 pair，用结构化绑定解包",[76,223,225],{"className":78,"code":224,"language":80,"meta":81,"style":81},"#include \u003Ciostream>\n#include \u003Cutility>  // for std::pair\n\n// 返回两个值的函数\nstd::pair\u003Cint, bool> divide(int a, int b)\n{\n    if (b == 0)\n    {\n        return {0, false};  // 除数为 0，返回失败\n    }\n    return {a / b, true};   // 返回结果和成功标志\n}\n\nint main()\n{\n    // C++17 结构化绑定：一行解包\n    auto [result, ok] = divide(10, 2);\n    if (ok)\n    {\n        std::cout \u003C\u003C \"10 / 2 = \" \u003C\u003C result \u003C\u003C \"\\n\";\n    }\n\n    auto [result2, ok2] = divide(10, 0);\n    if (!ok2)\n    {\n        std::cout \u003C\u003C \"10 / 0: division failed\\n\";\n    }\n\n    return 0;\n}\n",[18,226,227,236,246,252,258,308,314,332,338,361,367,390,396,401,412,417,423,450,458,463,498,503,508,530,544,549,567,572,577,586],{"__ignoreMap":81},[85,228,229,232],{"class":87,"line":88},[85,230,231],{"class":91},"#include",[85,233,235],{"class":234},"sZZnC"," \u003Ciostream>\n",[85,237,238,240,243],{"class":87,"line":109},[85,239,231],{"class":91},[85,241,242],{"class":234}," \u003Cutility>",[85,244,245],{"class":105},"  // for std::pair\n",[85,247,248],{"class":87,"line":124},[85,249,251],{"emptyLinePlaceholder":250},true,"\n",[85,253,255],{"class":87,"line":254},4,[85,256,257],{"class":105},"// 返回两个值的函数\n",[85,259,261,265,268,271,274,277,280,283,286,289,292,294,298,300,302,305],{"class":87,"line":260},5,[85,262,264],{"class":263},"sScJk","std",[85,266,267],{"class":95},"::",[85,269,270],{"class":263},"pair",[85,272,273],{"class":95},"\u003C",[85,275,276],{"class":91},"int",[85,278,279],{"class":95},", ",[85,281,282],{"class":91},"bool",[85,284,285],{"class":95},"> ",[85,287,288],{"class":263},"divide",[85,290,291],{"class":95},"(",[85,293,276],{"class":91},[85,295,297],{"class":296},"s4XuR"," a",[85,299,279],{"class":95},[85,301,276],{"class":91},[85,303,304],{"class":296}," b",[85,306,307],{"class":95},")\n",[85,309,311],{"class":87,"line":310},6,[85,312,313],{"class":95},"{\n",[85,315,317,320,323,326,330],{"class":87,"line":316},7,[85,318,319],{"class":91},"    if",[85,321,322],{"class":95}," (b ",[85,324,325],{"class":91},"==",[85,327,329],{"class":328},"sj4cs"," 0",[85,331,307],{"class":95},[85,333,335],{"class":87,"line":334},8,[85,336,337],{"class":95},"    {\n",[85,339,341,344,347,350,352,355,358],{"class":87,"line":340},9,[85,342,343],{"class":91},"        return",[85,345,346],{"class":95}," {",[85,348,349],{"class":328},"0",[85,351,279],{"class":95},[85,353,354],{"class":328},"false",[85,356,357],{"class":95},"};",[85,359,360],{"class":105},"  // 除数为 0，返回失败\n",[85,362,364],{"class":87,"line":363},10,[85,365,366],{"class":95},"    }\n",[85,368,370,373,376,379,382,385,387],{"class":87,"line":369},11,[85,371,372],{"class":91},"    return",[85,374,375],{"class":95}," {a ",[85,377,378],{"class":91},"/",[85,380,381],{"class":95}," b, ",[85,383,384],{"class":328},"true",[85,386,357],{"class":95},[85,388,389],{"class":105},"   // 返回结果和成功标志\n",[85,391,393],{"class":87,"line":392},12,[85,394,395],{"class":95},"}\n",[85,397,399],{"class":87,"line":398},13,[85,400,251],{"emptyLinePlaceholder":250},[85,402,404,406,409],{"class":87,"line":403},14,[85,405,276],{"class":91},[85,407,408],{"class":263}," main",[85,410,411],{"class":95},"()\n",[85,413,415],{"class":87,"line":414},15,[85,416,313],{"class":95},[85,418,420],{"class":87,"line":419},16,[85,421,422],{"class":105},"    // C++17 结构化绑定：一行解包\n",[85,424,426,429,432,434,437,439,442,444,447],{"class":87,"line":425},17,[85,427,428],{"class":91},"    auto",[85,430,431],{"class":95}," [result, ok] ",[85,433,99],{"class":91},[85,435,436],{"class":263}," divide",[85,438,291],{"class":95},[85,440,441],{"class":328},"10",[85,443,279],{"class":95},[85,445,446],{"class":328},"2",[85,448,449],{"class":95},");\n",[85,451,453,455],{"class":87,"line":452},18,[85,454,319],{"class":91},[85,456,457],{"class":95}," (ok)\n",[85,459,461],{"class":87,"line":460},19,[85,462,337],{"class":95},[85,464,466,469,472,475,478,481,484,486,489,492,495],{"class":87,"line":465},20,[85,467,468],{"class":263},"        std",[85,470,471],{"class":95},"::cout ",[85,473,474],{"class":91},"\u003C\u003C",[85,476,477],{"class":234}," \"10 / 2 = \"",[85,479,480],{"class":91}," \u003C\u003C",[85,482,483],{"class":95}," result ",[85,485,474],{"class":91},[85,487,488],{"class":234}," \"",[85,490,491],{"class":328},"\\n",[85,493,494],{"class":234},"\"",[85,496,497],{"class":95},";\n",[85,499,501],{"class":87,"line":500},21,[85,502,366],{"class":95},[85,504,506],{"class":87,"line":505},22,[85,507,251],{"emptyLinePlaceholder":250},[85,509,511,513,516,518,520,522,524,526,528],{"class":87,"line":510},23,[85,512,428],{"class":91},[85,514,515],{"class":95}," [result2, ok2] ",[85,517,99],{"class":91},[85,519,436],{"class":263},[85,521,291],{"class":95},[85,523,441],{"class":328},[85,525,279],{"class":95},[85,527,349],{"class":328},[85,529,449],{"class":95},[85,531,533,535,538,541],{"class":87,"line":532},24,[85,534,319],{"class":91},[85,536,537],{"class":95}," (",[85,539,540],{"class":91},"!",[85,542,543],{"class":95},"ok2)\n",[85,545,547],{"class":87,"line":546},25,[85,548,337],{"class":95},[85,550,552,554,556,558,561,563,565],{"class":87,"line":551},26,[85,553,468],{"class":263},[85,555,471],{"class":95},[85,557,474],{"class":91},[85,559,560],{"class":234}," \"10 / 0: division failed",[85,562,491],{"class":328},[85,564,494],{"class":234},[85,566,497],{"class":95},[85,568,570],{"class":87,"line":569},27,[85,571,366],{"class":95},[85,573,575],{"class":87,"line":574},28,[85,576,251],{"emptyLinePlaceholder":250},[85,578,580,582,584],{"class":87,"line":579},29,[85,581,372],{"class":91},[85,583,329],{"class":328},[85,585,497],{"class":95},[85,587,589],{"class":87,"line":588},30,[85,590,395],{"class":95},[14,592,593,596],{},[41,594,595],{},"运行结果","：",[76,598,603],{"className":599,"code":601,"language":602},[600],"language-text","10 / 2 = 5\n10 / 0: division failed\n","text",[18,604,601],{"__ignoreMap":81},[218,606,608],{"id":607},"示例-2在示例-1-基础上解包-tuple-和数组","示例 2：在示例 1 基础上，解包 tuple 和数组",[76,610,612],{"className":78,"code":611,"language":80,"meta":81,"style":81},"#include \u003Ciostream>\n#include \u003Ctuple>\n\n// 返回多个值\nstd::tuple\u003Cstd::string, int, double> get_student_info()\n{\n    return {\"Alice\", 20, 3.8};  // 姓名、年龄、GPA\n}\n\nint main()\n{\n    // 解包 tuple\n    auto [name, age, gpa] = get_student_info();\n    std::cout \u003C\u003C \"Name: \" \u003C\u003C name \u003C\u003C \"\\n\";\n    std::cout \u003C\u003C \"Age: \" \u003C\u003C age \u003C\u003C \"\\n\";\n    std::cout \u003C\u003C \"GPA: \" \u003C\u003C gpa \u003C\u003C \"\\n\";\n\n    // 解包数组\n    int arr[] = {10, 20, 30};\n    auto [a, b, c] = arr;\n    std::cout \u003C\u003C \"arr: \" \u003C\u003C a \u003C\u003C \", \" \u003C\u003C b \u003C\u003C \", \" \u003C\u003C c \u003C\u003C \"\\n\";\n\n    return 0;\n}\n",[18,613,614,620,627,631,636,670,674,698,702,706,714,718,723,738,765,791,817,821,826,852,864,909,913,921],{"__ignoreMap":81},[85,615,616,618],{"class":87,"line":88},[85,617,231],{"class":91},[85,619,235],{"class":234},[85,621,622,624],{"class":87,"line":109},[85,623,231],{"class":91},[85,625,626],{"class":234}," \u003Ctuple>\n",[85,628,629],{"class":87,"line":124},[85,630,251],{"emptyLinePlaceholder":250},[85,632,633],{"class":87,"line":254},[85,634,635],{"class":105},"// 返回多个值\n",[85,637,638,640,642,645,647,649,651,654,656,658,660,663,665,668],{"class":87,"line":260},[85,639,264],{"class":263},[85,641,267],{"class":95},[85,643,644],{"class":263},"tuple",[85,646,273],{"class":95},[85,648,264],{"class":263},[85,650,267],{"class":95},[85,652,653],{"class":263},"string",[85,655,279],{"class":95},[85,657,276],{"class":91},[85,659,279],{"class":95},[85,661,662],{"class":91},"double",[85,664,285],{"class":95},[85,666,667],{"class":263},"get_student_info",[85,669,411],{"class":95},[85,671,672],{"class":87,"line":310},[85,673,313],{"class":95},[85,675,676,678,680,683,685,688,690,693,695],{"class":87,"line":316},[85,677,372],{"class":91},[85,679,346],{"class":95},[85,681,682],{"class":234},"\"Alice\"",[85,684,279],{"class":95},[85,686,687],{"class":328},"20",[85,689,279],{"class":95},[85,691,692],{"class":328},"3.8",[85,694,357],{"class":95},[85,696,697],{"class":105},"  // 姓名、年龄、GPA\n",[85,699,700],{"class":87,"line":334},[85,701,395],{"class":95},[85,703,704],{"class":87,"line":340},[85,705,251],{"emptyLinePlaceholder":250},[85,707,708,710,712],{"class":87,"line":363},[85,709,276],{"class":91},[85,711,408],{"class":263},[85,713,411],{"class":95},[85,715,716],{"class":87,"line":369},[85,717,313],{"class":95},[85,719,720],{"class":87,"line":392},[85,721,722],{"class":105},"    // 解包 tuple\n",[85,724,725,727,730,732,735],{"class":87,"line":398},[85,726,428],{"class":91},[85,728,729],{"class":95}," [name, age, gpa] ",[85,731,99],{"class":91},[85,733,734],{"class":263}," get_student_info",[85,736,737],{"class":95},"();\n",[85,739,740,743,745,747,750,752,755,757,759,761,763],{"class":87,"line":403},[85,741,742],{"class":263},"    std",[85,744,471],{"class":95},[85,746,474],{"class":91},[85,748,749],{"class":234}," \"Name: \"",[85,751,480],{"class":91},[85,753,754],{"class":95}," name ",[85,756,474],{"class":91},[85,758,488],{"class":234},[85,760,491],{"class":328},[85,762,494],{"class":234},[85,764,497],{"class":95},[85,766,767,769,771,773,776,778,781,783,785,787,789],{"class":87,"line":414},[85,768,742],{"class":263},[85,770,471],{"class":95},[85,772,474],{"class":91},[85,774,775],{"class":234}," \"Age: \"",[85,777,480],{"class":91},[85,779,780],{"class":95}," age ",[85,782,474],{"class":91},[85,784,488],{"class":234},[85,786,491],{"class":328},[85,788,494],{"class":234},[85,790,497],{"class":95},[85,792,793,795,797,799,802,804,807,809,811,813,815],{"class":87,"line":419},[85,794,742],{"class":263},[85,796,471],{"class":95},[85,798,474],{"class":91},[85,800,801],{"class":234}," \"GPA: \"",[85,803,480],{"class":91},[85,805,806],{"class":95}," gpa ",[85,808,474],{"class":91},[85,810,488],{"class":234},[85,812,491],{"class":328},[85,814,494],{"class":234},[85,816,497],{"class":95},[85,818,819],{"class":87,"line":425},[85,820,251],{"emptyLinePlaceholder":250},[85,822,823],{"class":87,"line":452},[85,824,825],{"class":105},"    // 解包数组\n",[85,827,828,831,834,836,838,840,842,844,846,849],{"class":87,"line":460},[85,829,830],{"class":91},"    int",[85,832,833],{"class":95}," arr[] ",[85,835,99],{"class":91},[85,837,346],{"class":95},[85,839,441],{"class":328},[85,841,279],{"class":95},[85,843,687],{"class":328},[85,845,279],{"class":95},[85,847,848],{"class":328},"30",[85,850,851],{"class":95},"};\n",[85,853,854,856,859,861],{"class":87,"line":465},[85,855,428],{"class":91},[85,857,858],{"class":95}," [a, b, c] ",[85,860,99],{"class":91},[85,862,863],{"class":95}," arr;\n",[85,865,866,868,870,872,875,877,880,882,885,887,890,892,894,896,899,901,903,905,907],{"class":87,"line":500},[85,867,742],{"class":263},[85,869,471],{"class":95},[85,871,474],{"class":91},[85,873,874],{"class":234}," \"arr: \"",[85,876,480],{"class":91},[85,878,879],{"class":95}," a ",[85,881,474],{"class":91},[85,883,884],{"class":234}," \", \"",[85,886,480],{"class":91},[85,888,889],{"class":95}," b ",[85,891,474],{"class":91},[85,893,884],{"class":234},[85,895,480],{"class":91},[85,897,898],{"class":95}," c ",[85,900,474],{"class":91},[85,902,488],{"class":234},[85,904,491],{"class":328},[85,906,494],{"class":234},[85,908,497],{"class":95},[85,910,911],{"class":87,"line":505},[85,912,251],{"emptyLinePlaceholder":250},[85,914,915,917,919],{"class":87,"line":510},[85,916,372],{"class":91},[85,918,329],{"class":328},[85,920,497],{"class":95},[85,922,923],{"class":87,"line":532},[85,924,395],{"class":95},[14,926,927,596],{},[41,928,595],{},[76,930,933],{"className":931,"code":932,"language":602},[600],"Name: Alice\nAge: 20\nGPA: 3.8\narr: 10, 20, 30\n",[18,934,932],{"__ignoreMap":81},[218,936,938],{"id":937},"示例-3在示例-2-基础上解包结构体","示例 3：在示例 2 基础上，解包结构体",[76,940,942],{"className":78,"code":941,"language":80,"meta":81,"style":81},"#include \u003Ciostream>\n#include \u003Cstring>\n\nstruct Point\n{\n    double x;\n    double y;\n    double z;\n};\n\nPoint midpoint(const Point& p1, const Point& p2)\n{\n    return {\n        (p1.x + p2.x) / 2.0,\n        (p1.y + p2.y) / 2.0,\n        (p1.z + p2.z) / 2.0\n    };\n}\n\nint main()\n{\n    Point p1{1.0, 2.0, 3.0};\n    Point p2{5.0, 6.0, 7.0};\n\n    // 解包结构体\n    auto [x, y, z] = midpoint(p1, p2);\n    std::cout \u003C\u003C \"midpoint: (\" \u003C\u003C x \u003C\u003C \", \" \u003C\u003C y \u003C\u003C \", \" \u003C\u003C z \u003C\u003C \")\\n\";\n\n    // 解包返回的临时 Point 对象\n    auto [a, b, c] = Point{10.0, 20.0, 30.0};\n    std::cout \u003C\u003C \"point: (\" \u003C\u003C a \u003C\u003C \", \" \u003C\u003C b \u003C\u003C \", \" \u003C\u003C c \u003C\u003C \")\\n\";\n\n    return 0;\n}\n",[18,943,944,950,957,961,969,973,981,988,995,999,1003,1037,1041,1048,1067,1083,1098,1103,1107,1111,1119,1123,1143,1163,1167,1172,1186,1231,1235,1240,1266,1308,1313,1322],{"__ignoreMap":81},[85,945,946,948],{"class":87,"line":88},[85,947,231],{"class":91},[85,949,235],{"class":234},[85,951,952,954],{"class":87,"line":109},[85,953,231],{"class":91},[85,955,956],{"class":234}," \u003Cstring>\n",[85,958,959],{"class":87,"line":124},[85,960,251],{"emptyLinePlaceholder":250},[85,962,963,966],{"class":87,"line":254},[85,964,965],{"class":91},"struct",[85,967,968],{"class":263}," Point\n",[85,970,971],{"class":87,"line":260},[85,972,313],{"class":95},[85,974,975,978],{"class":87,"line":310},[85,976,977],{"class":91},"    double",[85,979,980],{"class":95}," x;\n",[85,982,983,985],{"class":87,"line":316},[85,984,977],{"class":91},[85,986,987],{"class":95}," y;\n",[85,989,990,992],{"class":87,"line":334},[85,991,977],{"class":91},[85,993,994],{"class":95}," z;\n",[85,996,997],{"class":87,"line":340},[85,998,851],{"class":95},[85,1000,1001],{"class":87,"line":363},[85,1002,251],{"emptyLinePlaceholder":250},[85,1004,1005,1008,1011,1013,1015,1018,1021,1024,1026,1028,1030,1032,1035],{"class":87,"line":369},[85,1006,1007],{"class":263},"Point",[85,1009,1010],{"class":263}," midpoint",[85,1012,291],{"class":95},[85,1014,127],{"class":91},[85,1016,1017],{"class":263}," Point",[85,1019,1020],{"class":91},"&",[85,1022,1023],{"class":296}," p1",[85,1025,279],{"class":95},[85,1027,127],{"class":91},[85,1029,1017],{"class":263},[85,1031,1020],{"class":91},[85,1033,1034],{"class":296}," p2",[85,1036,307],{"class":95},[85,1038,1039],{"class":87,"line":392},[85,1040,313],{"class":95},[85,1042,1043,1045],{"class":87,"line":398},[85,1044,372],{"class":91},[85,1046,1047],{"class":95}," {\n",[85,1049,1050,1053,1056,1059,1061,1064],{"class":87,"line":403},[85,1051,1052],{"class":95},"        (p1.x ",[85,1054,1055],{"class":91},"+",[85,1057,1058],{"class":95}," p2.x) ",[85,1060,378],{"class":91},[85,1062,1063],{"class":328}," 2.0",[85,1065,1066],{"class":95},",\n",[85,1068,1069,1072,1074,1077,1079,1081],{"class":87,"line":414},[85,1070,1071],{"class":95},"        (p1.y ",[85,1073,1055],{"class":91},[85,1075,1076],{"class":95}," p2.y) ",[85,1078,378],{"class":91},[85,1080,1063],{"class":328},[85,1082,1066],{"class":95},[85,1084,1085,1088,1090,1093,1095],{"class":87,"line":419},[85,1086,1087],{"class":95},"        (p1.z ",[85,1089,1055],{"class":91},[85,1091,1092],{"class":95}," p2.z) ",[85,1094,378],{"class":91},[85,1096,1097],{"class":328}," 2.0\n",[85,1099,1100],{"class":87,"line":425},[85,1101,1102],{"class":95},"    };\n",[85,1104,1105],{"class":87,"line":452},[85,1106,395],{"class":95},[85,1108,1109],{"class":87,"line":460},[85,1110,251],{"emptyLinePlaceholder":250},[85,1112,1113,1115,1117],{"class":87,"line":465},[85,1114,276],{"class":91},[85,1116,408],{"class":263},[85,1118,411],{"class":95},[85,1120,1121],{"class":87,"line":500},[85,1122,313],{"class":95},[85,1124,1125,1128,1131,1133,1136,1138,1141],{"class":87,"line":505},[85,1126,1127],{"class":95},"    Point p1{",[85,1129,1130],{"class":328},"1.0",[85,1132,279],{"class":95},[85,1134,1135],{"class":328},"2.0",[85,1137,279],{"class":95},[85,1139,1140],{"class":328},"3.0",[85,1142,851],{"class":95},[85,1144,1145,1148,1151,1153,1156,1158,1161],{"class":87,"line":510},[85,1146,1147],{"class":95},"    Point p2{",[85,1149,1150],{"class":328},"5.0",[85,1152,279],{"class":95},[85,1154,1155],{"class":328},"6.0",[85,1157,279],{"class":95},[85,1159,1160],{"class":328},"7.0",[85,1162,851],{"class":95},[85,1164,1165],{"class":87,"line":532},[85,1166,251],{"emptyLinePlaceholder":250},[85,1168,1169],{"class":87,"line":546},[85,1170,1171],{"class":105},"    // 解包结构体\n",[85,1173,1174,1176,1179,1181,1183],{"class":87,"line":551},[85,1175,428],{"class":91},[85,1177,1178],{"class":95}," [x, y, z] ",[85,1180,99],{"class":91},[85,1182,1010],{"class":263},[85,1184,1185],{"class":95},"(p1, p2);\n",[85,1187,1188,1190,1192,1194,1197,1199,1202,1204,1206,1208,1211,1213,1215,1217,1220,1222,1225,1227,1229],{"class":87,"line":569},[85,1189,742],{"class":263},[85,1191,471],{"class":95},[85,1193,474],{"class":91},[85,1195,1196],{"class":234}," \"midpoint: (\"",[85,1198,480],{"class":91},[85,1200,1201],{"class":95}," x ",[85,1203,474],{"class":91},[85,1205,884],{"class":234},[85,1207,480],{"class":91},[85,1209,1210],{"class":95}," y ",[85,1212,474],{"class":91},[85,1214,884],{"class":234},[85,1216,480],{"class":91},[85,1218,1219],{"class":95}," z ",[85,1221,474],{"class":91},[85,1223,1224],{"class":234}," \")",[85,1226,491],{"class":328},[85,1228,494],{"class":234},[85,1230,497],{"class":95},[85,1232,1233],{"class":87,"line":574},[85,1234,251],{"emptyLinePlaceholder":250},[85,1236,1237],{"class":87,"line":579},[85,1238,1239],{"class":105},"    // 解包返回的临时 Point 对象\n",[85,1241,1242,1244,1246,1248,1251,1254,1256,1259,1261,1264],{"class":87,"line":588},[85,1243,428],{"class":91},[85,1245,858],{"class":95},[85,1247,99],{"class":91},[85,1249,1250],{"class":95}," Point{",[85,1252,1253],{"class":328},"10.0",[85,1255,279],{"class":95},[85,1257,1258],{"class":328},"20.0",[85,1260,279],{"class":95},[85,1262,1263],{"class":328},"30.0",[85,1265,851],{"class":95},[85,1267,1269,1271,1273,1275,1278,1280,1282,1284,1286,1288,1290,1292,1294,1296,1298,1300,1302,1304,1306],{"class":87,"line":1268},31,[85,1270,742],{"class":263},[85,1272,471],{"class":95},[85,1274,474],{"class":91},[85,1276,1277],{"class":234}," \"point: (\"",[85,1279,480],{"class":91},[85,1281,879],{"class":95},[85,1283,474],{"class":91},[85,1285,884],{"class":234},[85,1287,480],{"class":91},[85,1289,889],{"class":95},[85,1291,474],{"class":91},[85,1293,884],{"class":234},[85,1295,480],{"class":91},[85,1297,898],{"class":95},[85,1299,474],{"class":91},[85,1301,1224],{"class":234},[85,1303,491],{"class":328},[85,1305,494],{"class":234},[85,1307,497],{"class":95},[85,1309,1311],{"class":87,"line":1310},32,[85,1312,251],{"emptyLinePlaceholder":250},[85,1314,1316,1318,1320],{"class":87,"line":1315},33,[85,1317,372],{"class":91},[85,1319,329],{"class":328},[85,1321,497],{"class":95},[85,1323,1325],{"class":87,"line":1324},34,[85,1326,395],{"class":95},[14,1328,1329,596],{},[41,1330,595],{},[76,1332,1335],{"className":1333,"code":1334,"language":602},[600],"midpoint: (3, 4, 5)\npoint: (10, 20, 30)\n",[18,1336,1334],{"__ignoreMap":81},[218,1338,1340],{"id":1339},"示例-4在-map-遍历和-insert-中应用结构化绑定","示例 4：在 map 遍历和 insert 中应用结构化绑定",[76,1342,1344],{"className":78,"code":1343,"language":80,"meta":81,"style":81},"#include \u003Ciostream>\n#include \u003Cmap>\n#include \u003Cstring>\n\nint main()\n{\n    std::map\u003Cstd::string, int> scores;\n\n    // insert 返回 pair\u003Citerator, bool>\n    auto [it1, inserted1] = scores.insert({\"Alice\", 85});\n    if (inserted1)\n    {\n        std::cout \u003C\u003C \"Alice inserted, score: \" \u003C\u003C it1->second \u003C\u003C \"\\n\";\n    }\n\n    // 再次插入同名（会失败）\n    auto [it2, inserted2] = scores.insert({\"Alice\", 100});\n    if (!inserted2)\n    {\n        std::cout \u003C\u003C \"Alice already exists, score: \" \u003C\u003C it2->second \u003C\u003C \"\\n\";\n    }\n\n    // 再插入几个\n    scores.insert({\"Bob\", 92});\n    scores.insert({\"Charlie\", 78});\n\n    // 遍历 map，结构化绑定解包 key/value\n    std::cout \u003C\u003C \"\\nAll scores:\\n\";\n    for (const auto& [name, score] : scores)\n    {\n        std::cout \u003C\u003C \"  \" \u003C\u003C name \u003C\u003C \": \" \u003C\u003C score \u003C\u003C \"\\n\";\n    }\n\n    return 0;\n}\n",[18,1345,1346,1352,1359,1365,1369,1377,1381,1401,1405,1410,1438,1445,1449,1475,1479,1483,1488,1512,1523,1527,1553,1557,1561,1566,1585,1603,1607,1612,1633,1647,1651,1686,1690,1694,1702],{"__ignoreMap":81},[85,1347,1348,1350],{"class":87,"line":88},[85,1349,231],{"class":91},[85,1351,235],{"class":234},[85,1353,1354,1356],{"class":87,"line":109},[85,1355,231],{"class":91},[85,1357,1358],{"class":234}," \u003Cmap>\n",[85,1360,1361,1363],{"class":87,"line":124},[85,1362,231],{"class":91},[85,1364,956],{"class":234},[85,1366,1367],{"class":87,"line":254},[85,1368,251],{"emptyLinePlaceholder":250},[85,1370,1371,1373,1375],{"class":87,"line":260},[85,1372,276],{"class":91},[85,1374,408],{"class":263},[85,1376,411],{"class":95},[85,1378,1379],{"class":87,"line":310},[85,1380,313],{"class":95},[85,1382,1383,1385,1388,1390,1392,1395,1398],{"class":87,"line":316},[85,1384,742],{"class":263},[85,1386,1387],{"class":95},"::map",[85,1389,273],{"class":91},[85,1391,264],{"class":263},[85,1393,1394],{"class":95},"::string, ",[85,1396,1397],{"class":91},"int>",[85,1399,1400],{"class":95}," scores;\n",[85,1402,1403],{"class":87,"line":334},[85,1404,251],{"emptyLinePlaceholder":250},[85,1406,1407],{"class":87,"line":340},[85,1408,1409],{"class":105},"    // insert 返回 pair\u003Citerator, bool>\n",[85,1411,1412,1414,1417,1419,1422,1425,1428,1430,1432,1435],{"class":87,"line":363},[85,1413,428],{"class":91},[85,1415,1416],{"class":95}," [it1, inserted1] ",[85,1418,99],{"class":91},[85,1420,1421],{"class":95}," scores.",[85,1423,1424],{"class":263},"insert",[85,1426,1427],{"class":95},"({",[85,1429,682],{"class":234},[85,1431,279],{"class":95},[85,1433,1434],{"class":328},"85",[85,1436,1437],{"class":95},"});\n",[85,1439,1440,1442],{"class":87,"line":369},[85,1441,319],{"class":91},[85,1443,1444],{"class":95}," (inserted1)\n",[85,1446,1447],{"class":87,"line":392},[85,1448,337],{"class":95},[85,1450,1451,1453,1455,1457,1460,1462,1465,1467,1469,1471,1473],{"class":87,"line":398},[85,1452,468],{"class":263},[85,1454,471],{"class":95},[85,1456,474],{"class":91},[85,1458,1459],{"class":234}," \"Alice inserted, score: \"",[85,1461,480],{"class":91},[85,1463,1464],{"class":95}," it1->second ",[85,1466,474],{"class":91},[85,1468,488],{"class":234},[85,1470,491],{"class":328},[85,1472,494],{"class":234},[85,1474,497],{"class":95},[85,1476,1477],{"class":87,"line":403},[85,1478,366],{"class":95},[85,1480,1481],{"class":87,"line":414},[85,1482,251],{"emptyLinePlaceholder":250},[85,1484,1485],{"class":87,"line":419},[85,1486,1487],{"class":105},"    // 再次插入同名（会失败）\n",[85,1489,1490,1492,1495,1497,1499,1501,1503,1505,1507,1510],{"class":87,"line":425},[85,1491,428],{"class":91},[85,1493,1494],{"class":95}," [it2, inserted2] ",[85,1496,99],{"class":91},[85,1498,1421],{"class":95},[85,1500,1424],{"class":263},[85,1502,1427],{"class":95},[85,1504,682],{"class":234},[85,1506,279],{"class":95},[85,1508,1509],{"class":328},"100",[85,1511,1437],{"class":95},[85,1513,1514,1516,1518,1520],{"class":87,"line":452},[85,1515,319],{"class":91},[85,1517,537],{"class":95},[85,1519,540],{"class":91},[85,1521,1522],{"class":95},"inserted2)\n",[85,1524,1525],{"class":87,"line":460},[85,1526,337],{"class":95},[85,1528,1529,1531,1533,1535,1538,1540,1543,1545,1547,1549,1551],{"class":87,"line":465},[85,1530,468],{"class":263},[85,1532,471],{"class":95},[85,1534,474],{"class":91},[85,1536,1537],{"class":234}," \"Alice already exists, score: \"",[85,1539,480],{"class":91},[85,1541,1542],{"class":95}," it2->second ",[85,1544,474],{"class":91},[85,1546,488],{"class":234},[85,1548,491],{"class":328},[85,1550,494],{"class":234},[85,1552,497],{"class":95},[85,1554,1555],{"class":87,"line":500},[85,1556,366],{"class":95},[85,1558,1559],{"class":87,"line":505},[85,1560,251],{"emptyLinePlaceholder":250},[85,1562,1563],{"class":87,"line":510},[85,1564,1565],{"class":105},"    // 再插入几个\n",[85,1567,1568,1571,1573,1575,1578,1580,1583],{"class":87,"line":532},[85,1569,1570],{"class":95},"    scores.",[85,1572,1424],{"class":263},[85,1574,1427],{"class":95},[85,1576,1577],{"class":234},"\"Bob\"",[85,1579,279],{"class":95},[85,1581,1582],{"class":328},"92",[85,1584,1437],{"class":95},[85,1586,1587,1589,1591,1593,1596,1598,1601],{"class":87,"line":546},[85,1588,1570],{"class":95},[85,1590,1424],{"class":263},[85,1592,1427],{"class":95},[85,1594,1595],{"class":234},"\"Charlie\"",[85,1597,279],{"class":95},[85,1599,1600],{"class":328},"78",[85,1602,1437],{"class":95},[85,1604,1605],{"class":87,"line":551},[85,1606,251],{"emptyLinePlaceholder":250},[85,1608,1609],{"class":87,"line":569},[85,1610,1611],{"class":105},"    // 遍历 map，结构化绑定解包 key/value\n",[85,1613,1614,1616,1618,1620,1622,1624,1627,1629,1631],{"class":87,"line":574},[85,1615,742],{"class":263},[85,1617,471],{"class":95},[85,1619,474],{"class":91},[85,1621,488],{"class":234},[85,1623,491],{"class":328},[85,1625,1626],{"class":234},"All scores:",[85,1628,491],{"class":328},[85,1630,494],{"class":234},[85,1632,497],{"class":95},[85,1634,1635,1638,1640,1642,1644],{"class":87,"line":579},[85,1636,1637],{"class":91},"    for",[85,1639,537],{"class":95},[85,1641,127],{"class":91},[85,1643,130],{"class":91},[85,1645,1646],{"class":95}," [name, score] : scores)\n",[85,1648,1649],{"class":87,"line":588},[85,1650,337],{"class":95},[85,1652,1653,1655,1657,1659,1662,1664,1666,1668,1671,1673,1676,1678,1680,1682,1684],{"class":87,"line":1268},[85,1654,468],{"class":263},[85,1656,471],{"class":95},[85,1658,474],{"class":91},[85,1660,1661],{"class":234}," \"  \"",[85,1663,480],{"class":91},[85,1665,754],{"class":95},[85,1667,474],{"class":91},[85,1669,1670],{"class":234}," \": \"",[85,1672,480],{"class":91},[85,1674,1675],{"class":95}," score ",[85,1677,474],{"class":91},[85,1679,488],{"class":234},[85,1681,491],{"class":328},[85,1683,494],{"class":234},[85,1685,497],{"class":95},[85,1687,1688],{"class":87,"line":1310},[85,1689,366],{"class":95},[85,1691,1692],{"class":87,"line":1315},[85,1693,251],{"emptyLinePlaceholder":250},[85,1695,1696,1698,1700],{"class":87,"line":1324},[85,1697,372],{"class":91},[85,1699,329],{"class":328},[85,1701,497],{"class":95},[85,1703,1705],{"class":87,"line":1704},35,[85,1706,395],{"class":95},[14,1708,1709,596],{},[41,1710,595],{},[76,1712,1715],{"className":1713,"code":1714,"language":602},[600],"Alice inserted, score: 85\nAlice already exists, score: 85\n\nAll scores:\n  Alice: 85\n  Bob: 92\n  Charlie: 78\n",[18,1716,1714],{"__ignoreMap":81},[10,1718,595],{"id":595},[14,1720,1721],{},"见上方每个示例的\"运行结果\"。",[10,1723,1724],{"id":1724},"示例中的关键语法解释",[144,1726,1727,1746],{},[147,1728,1729],{},[150,1730,1731,1734,1737,1740,1743],{},[153,1732,1733],{"align":155},"示例",[153,1735,1736],{"align":155},"讲了什么",[153,1738,1739],{"align":155},"新出现的语法",[153,1741,1742],{"align":155},"为什么这样写",[153,1744,1745],{"align":155},"注意事项",[161,1747,1748,1766,1789,1808],{},[150,1749,1750,1753,1755,1760,1763],{},[166,1751,1752],{"align":155},"示例 1",[166,1754,173],{"align":155},[166,1756,1757],{"align":155},[18,1758,1759],{},"auto [result, ok] = pair",[166,1761,1762],{"align":155},"函数返回 pair\u003C值, 状态> 是常见模式",[166,1764,1765],{"align":155},"变量名可以任意起，按顺序对应",[150,1767,1768,1771,1774,1783,1786],{},[166,1769,1770],{"align":155},"示例 2",[166,1772,1773],{"align":155},"解包 tuple 和数组",[166,1775,1776,1779,1780],{"align":155},[18,1777,1778],{},"auto [a,b,c] = tuple","、",[18,1781,1782],{},"auto [a,b,c] = array",[166,1784,1785],{"align":155},"tuple 多值返回比 pair 更灵活",[166,1787,1788],{"align":155},"变量个数必须和 tuple/数组成员数一致",[150,1790,1791,1794,1797,1802,1805],{},[166,1792,1793],{"align":155},"示例 3",[166,1795,1796],{"align":155},"解包结构体",[166,1798,1799],{"align":155},[18,1800,1801],{},"auto [x,y,z] = struct_obj",[166,1803,1804],{"align":155},"按结构体成员声明顺序绑定",[166,1806,1807],{"align":155},"所有成员必须是 public，且顺序确定",[150,1809,1810,1813,1816,1824,1827],{},[166,1811,1812],{"align":155},"示例 4",[166,1814,1815],{"align":155},"map 遍历和 insert",[166,1817,1818,1779,1821],{"align":155},[18,1819,1820],{},"auto [it, ok] = m.insert(...)",[18,1822,1823],{},"[name, score]",[166,1825,1826],{"align":155},"遍历 map 最清晰的写法",[166,1828,1829,1831,1832],{"align":155},[18,1830,1424],{}," 返回 ",[18,1833,1834],{},"pair\u003Citerator, bool>",[10,1836,1838,1841,1842,1845],{"id":1837},"auto-a-b-和-auto-a-b-的区别",[18,1839,1840],{},"auto [a, b]"," 和 ",[18,1843,1844],{},"auto& [a, b]"," 的区别",[14,1847,1848],{},"结构化绑定默认会拷贝。遍历大对象或想修改原数据时，要写引用。",[218,1850,1852],{"id":1851},"示例-5修改-map-的-value-时必须用引用绑定","示例 5：修改 map 的 value 时必须用引用绑定",[76,1854,1856],{"className":78,"code":1855,"language":80,"meta":81,"style":81},"#include \u003Ciostream>\n#include \u003Cmap>\n#include \u003Cstring>\n\nint main()\n{\n    std::map\u003Cstd::string, int> scores = {\n        {\"Alice\", 85},\n        {\"Bob\", 92}\n    };\n\n    for (auto [name, score] : scores)\n    {\n        score += 10;  // 修改的是拷贝\n    }\n\n    std::cout \u003C\u003C \"after auto copy:\\n\";\n    for (const auto& [name, score] : scores)\n    {\n        std::cout \u003C\u003C name \u003C\u003C \": \" \u003C\u003C score \u003C\u003C \"\\n\";\n    }\n\n    for (auto& [name, score] : scores)\n    {\n        score += 10;  // 修改原 map 的 value\n    }\n\n    std::cout \u003C\u003C \"after auto& reference:\\n\";\n    for (const auto& [name, score] : scores)\n    {\n        std::cout \u003C\u003C name \u003C\u003C \": \" \u003C\u003C score \u003C\u003C \"\\n\";\n    }\n\n    return 0;\n}\n",[18,1857,1858,1864,1870,1876,1880,1888,1892,1913,1927,1939,1943,1947,1957,1961,1978,1982,1986,2003,2015,2019,2047,2051,2055,2065,2069,2082,2086,2090,2107,2119,2123,2151,2155,2159,2167],{"__ignoreMap":81},[85,1859,1860,1862],{"class":87,"line":88},[85,1861,231],{"class":91},[85,1863,235],{"class":234},[85,1865,1866,1868],{"class":87,"line":109},[85,1867,231],{"class":91},[85,1869,1358],{"class":234},[85,1871,1872,1874],{"class":87,"line":124},[85,1873,231],{"class":91},[85,1875,956],{"class":234},[85,1877,1878],{"class":87,"line":254},[85,1879,251],{"emptyLinePlaceholder":250},[85,1881,1882,1884,1886],{"class":87,"line":260},[85,1883,276],{"class":91},[85,1885,408],{"class":263},[85,1887,411],{"class":95},[85,1889,1890],{"class":87,"line":310},[85,1891,313],{"class":95},[85,1893,1894,1896,1898,1900,1902,1904,1906,1909,1911],{"class":87,"line":316},[85,1895,742],{"class":263},[85,1897,1387],{"class":95},[85,1899,273],{"class":91},[85,1901,264],{"class":263},[85,1903,1394],{"class":95},[85,1905,1397],{"class":91},[85,1907,1908],{"class":95}," scores ",[85,1910,99],{"class":91},[85,1912,1047],{"class":95},[85,1914,1915,1918,1920,1922,1924],{"class":87,"line":334},[85,1916,1917],{"class":95},"        {",[85,1919,682],{"class":234},[85,1921,279],{"class":95},[85,1923,1434],{"class":328},[85,1925,1926],{"class":95},"},\n",[85,1928,1929,1931,1933,1935,1937],{"class":87,"line":340},[85,1930,1917],{"class":95},[85,1932,1577],{"class":234},[85,1934,279],{"class":95},[85,1936,1582],{"class":328},[85,1938,395],{"class":95},[85,1940,1941],{"class":87,"line":363},[85,1942,1102],{"class":95},[85,1944,1945],{"class":87,"line":369},[85,1946,251],{"emptyLinePlaceholder":250},[85,1948,1949,1951,1953,1955],{"class":87,"line":392},[85,1950,1637],{"class":91},[85,1952,537],{"class":95},[85,1954,92],{"class":91},[85,1956,1646],{"class":95},[85,1958,1959],{"class":87,"line":398},[85,1960,337],{"class":95},[85,1962,1963,1966,1969,1972,1975],{"class":87,"line":403},[85,1964,1965],{"class":95},"        score ",[85,1967,1968],{"class":91},"+=",[85,1970,1971],{"class":328}," 10",[85,1973,1974],{"class":95},";",[85,1976,1977],{"class":105},"  // 修改的是拷贝\n",[85,1979,1980],{"class":87,"line":414},[85,1981,366],{"class":95},[85,1983,1984],{"class":87,"line":419},[85,1985,251],{"emptyLinePlaceholder":250},[85,1987,1988,1990,1992,1994,1997,1999,2001],{"class":87,"line":425},[85,1989,742],{"class":263},[85,1991,471],{"class":95},[85,1993,474],{"class":91},[85,1995,1996],{"class":234}," \"after auto copy:",[85,1998,491],{"class":328},[85,2000,494],{"class":234},[85,2002,497],{"class":95},[85,2004,2005,2007,2009,2011,2013],{"class":87,"line":452},[85,2006,1637],{"class":91},[85,2008,537],{"class":95},[85,2010,127],{"class":91},[85,2012,130],{"class":91},[85,2014,1646],{"class":95},[85,2016,2017],{"class":87,"line":460},[85,2018,337],{"class":95},[85,2020,2021,2023,2025,2027,2029,2031,2033,2035,2037,2039,2041,2043,2045],{"class":87,"line":465},[85,2022,468],{"class":263},[85,2024,471],{"class":95},[85,2026,474],{"class":91},[85,2028,754],{"class":95},[85,2030,474],{"class":91},[85,2032,1670],{"class":234},[85,2034,480],{"class":91},[85,2036,1675],{"class":95},[85,2038,474],{"class":91},[85,2040,488],{"class":234},[85,2042,491],{"class":328},[85,2044,494],{"class":234},[85,2046,497],{"class":95},[85,2048,2049],{"class":87,"line":500},[85,2050,366],{"class":95},[85,2052,2053],{"class":87,"line":505},[85,2054,251],{"emptyLinePlaceholder":250},[85,2056,2057,2059,2061,2063],{"class":87,"line":510},[85,2058,1637],{"class":91},[85,2060,537],{"class":95},[85,2062,112],{"class":91},[85,2064,1646],{"class":95},[85,2066,2067],{"class":87,"line":532},[85,2068,337],{"class":95},[85,2070,2071,2073,2075,2077,2079],{"class":87,"line":546},[85,2072,1965],{"class":95},[85,2074,1968],{"class":91},[85,2076,1971],{"class":328},[85,2078,1974],{"class":95},[85,2080,2081],{"class":105},"  // 修改原 map 的 value\n",[85,2083,2084],{"class":87,"line":551},[85,2085,366],{"class":95},[85,2087,2088],{"class":87,"line":569},[85,2089,251],{"emptyLinePlaceholder":250},[85,2091,2092,2094,2096,2098,2101,2103,2105],{"class":87,"line":574},[85,2093,742],{"class":263},[85,2095,471],{"class":95},[85,2097,474],{"class":91},[85,2099,2100],{"class":234}," \"after auto& reference:",[85,2102,491],{"class":328},[85,2104,494],{"class":234},[85,2106,497],{"class":95},[85,2108,2109,2111,2113,2115,2117],{"class":87,"line":579},[85,2110,1637],{"class":91},[85,2112,537],{"class":95},[85,2114,127],{"class":91},[85,2116,130],{"class":91},[85,2118,1646],{"class":95},[85,2120,2121],{"class":87,"line":588},[85,2122,337],{"class":95},[85,2124,2125,2127,2129,2131,2133,2135,2137,2139,2141,2143,2145,2147,2149],{"class":87,"line":1268},[85,2126,468],{"class":263},[85,2128,471],{"class":95},[85,2130,474],{"class":91},[85,2132,754],{"class":95},[85,2134,474],{"class":91},[85,2136,1670],{"class":234},[85,2138,480],{"class":91},[85,2140,1675],{"class":95},[85,2142,474],{"class":91},[85,2144,488],{"class":234},[85,2146,491],{"class":328},[85,2148,494],{"class":234},[85,2150,497],{"class":95},[85,2152,2153],{"class":87,"line":1310},[85,2154,366],{"class":95},[85,2156,2157],{"class":87,"line":1315},[85,2158,251],{"emptyLinePlaceholder":250},[85,2160,2161,2163,2165],{"class":87,"line":1324},[85,2162,372],{"class":91},[85,2164,329],{"class":328},[85,2166,497],{"class":95},[85,2168,2169],{"class":87,"line":1704},[85,2170,395],{"class":95},[14,2172,2173,596],{},[41,2174,595],{},[76,2176,2179],{"className":2177,"code":2178,"language":602},[600],"after auto copy:\nAlice: 85\nBob: 92\nafter auto& reference:\nAlice: 95\nBob: 102\n",[18,2180,2178],{"__ignoreMap":81},[14,2182,2183,2184,2187,2188,2191,2192,2195],{},"注意：",[18,2185,2186],{},"map"," 的 key 仍然不能改。即使用 ",[18,2189,2190],{},"auto& [name, score]","，",[18,2193,2194],{},"name"," 也是只读的，因为 map 必须保持 key 的排序规则不被破坏。",[10,2197,2198],{"id":2198},"常见错误",[14,2200,2201],{},[41,2202,2203],{},"错误 1：变量个数不匹配",[76,2205,2207],{"className":78,"code":2206,"language":80,"meta":81,"style":81},"auto [x, y] = std::make_tuple(1, 2, 3);  // ❌ left has 2, right has 3\n",[18,2208,2209],{"__ignoreMap":81},[85,2210,2211,2213,2216,2218,2221,2223,2226,2228,2231,2233,2235,2237,2240,2243],{"class":87,"line":88},[85,2212,92],{"class":91},[85,2214,2215],{"class":95}," [x, y] ",[85,2217,99],{"class":91},[85,2219,2220],{"class":263}," std",[85,2222,267],{"class":95},[85,2224,2225],{"class":263},"make_tuple",[85,2227,291],{"class":95},[85,2229,2230],{"class":328},"1",[85,2232,279],{"class":95},[85,2234,446],{"class":328},[85,2236,279],{"class":95},[85,2238,2239],{"class":328},"3",[85,2241,2242],{"class":95},");",[85,2244,2245],{"class":105},"  // ❌ left has 2, right has 3\n",[14,2247,2248],{},"正确做法：变量个数必须等于复合类型的元素个数。",[14,2250,2251],{},[41,2252,2253],{},"错误 2：解包非公有成员的结构体",[76,2255,2257],{"className":78,"code":2256,"language":80,"meta":81,"style":81},"struct A { private: int x; public: int y; };\nA obj;\nauto [x, y] = obj;  // ❌ 编译错误！结构体有私有成员时不能解包\n",[18,2258,2259,2286,2291],{"__ignoreMap":81},[85,2260,2261,2263,2266,2269,2272,2275,2278,2281,2283],{"class":87,"line":88},[85,2262,965],{"class":91},[85,2264,2265],{"class":263}," A",[85,2267,2268],{"class":95}," { ",[85,2270,2271],{"class":91},"private:",[85,2273,2274],{"class":91}," int",[85,2276,2277],{"class":95}," x; ",[85,2279,2280],{"class":91},"public:",[85,2282,2274],{"class":91},[85,2284,2285],{"class":95}," y; };\n",[85,2287,2288],{"class":87,"line":109},[85,2289,2290],{"class":95},"A obj;\n",[85,2292,2293,2295,2297,2299,2302],{"class":87,"line":124},[85,2294,92],{"class":91},[85,2296,2215],{"class":95},[85,2298,99],{"class":91},[85,2300,2301],{"class":95}," obj;",[85,2303,2304],{"class":105},"  // ❌ 编译错误！结构体有私有成员时不能解包\n",[14,2306,2307],{},"正确做法：所有成员都必须是 public。",[14,2309,2310],{},[41,2311,2312,2313,2315,2316,2318],{},"错误 3：用 ",[18,2314,92],{}," 而不是 ",[18,2317,112],{}," 导致修改无效",[76,2320,2322],{"className":78,"code":2321,"language":80,"meta":81,"style":81},"auto [k, v] = *map.begin();  // 拷贝了！\nv = 100;  // 只修改了拷贝\n",[18,2323,2324,2348],{"__ignoreMap":81},[85,2325,2326,2328,2331,2333,2336,2339,2342,2345],{"class":87,"line":88},[85,2327,92],{"class":91},[85,2329,2330],{"class":95}," [k, v] ",[85,2332,99],{"class":91},[85,2334,2335],{"class":91}," *",[85,2337,2338],{"class":95},"map.",[85,2340,2341],{"class":263},"begin",[85,2343,2344],{"class":95},"();",[85,2346,2347],{"class":105},"  // 拷贝了！\n",[85,2349,2350,2353,2355,2358,2360],{"class":87,"line":109},[85,2351,2352],{"class":95},"v ",[85,2354,99],{"class":91},[85,2356,2357],{"class":328}," 100",[85,2359,1974],{"class":95},[85,2361,2362],{"class":105},"  // 只修改了拷贝\n",[14,2364,2365,2366,71],{},"正确做法：要修改原值用 ",[18,2367,2368],{},"auto& [k, v] = ...",[10,2370,2371],{"id":2371},"使用建议",[2373,2374,2375,2387,2396,2408,2419],"ol",{},[2376,2377,2378,2386],"li",{},[41,2379,2380,2381,378,2383,2385],{},"函数返回多值时优先用 ",[18,2382,24],{},[18,2384,20],{}," + 结构化绑定","，而不是输出参数。",[2376,2388,2389,2395],{},[41,2390,2391,2392],{},"遍历 map 永远用 ",[18,2393,2394],{},"for (const auto& [key, val] : map)","，代码可读性最高。",[2376,2397,2398,596,2401,2404,2405,2407],{},[41,2399,2400],{},"解包 insert 返回值",[18,2402,2403],{},"auto [it, inserted] = map.insert(...)"," 比 ",[18,2406,35],{}," 更清晰。",[2376,2409,2410,2191,2415,2418],{},[41,2411,2412,2414],{},[18,2413,112],{}," 用于需要修改的场景",[18,2416,2417],{},"const auto&"," 用于只读场景。",[2376,2420,2421,2427],{},[41,2422,2423,2424],{},"遍历 map 时优先 ",[18,2425,2426],{},"const auto& [k, v]","：避免拷贝，也表达只读意图。",[10,2429,2430],{"id":2430},"小结",[2432,2433,2434,2437,2443,2450],"ul",{},[2376,2435,2436],{},"结构化绑定可以把 pair / tuple / 结构体 / 数组分解成独立变量。",[2376,2438,2439,2440,71],{},"语法：",[18,2441,2442],{},"auto [var1, var2, ...] = expression",[2376,2444,2445,2446,2449],{},"遍历 map 时 ",[18,2447,2448],{},"[key, value]"," 是最佳实践（C++17）。",[2376,2451,2452,2453,2456],{},"insert 返回值用 ",[18,2454,2455],{},"[iterator, bool]"," 解包非常清晰。",[2458,2459,2460],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}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);}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 .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}",{"title":81,"searchDepth":109,"depth":109,"links":2462},[2463,2464,2465,2466,2467,2468,2469,2475,2476,2477,2481,2482,2483],{"id":12,"depth":109,"text":12},{"id":47,"depth":109,"text":47},{"id":53,"depth":109,"text":54},{"id":60,"depth":109,"text":60},{"id":74,"depth":109,"text":74},{"id":142,"depth":109,"text":142},{"id":216,"depth":109,"text":216,"children":2470},[2471,2472,2473,2474],{"id":220,"depth":124,"text":221},{"id":607,"depth":124,"text":608},{"id":937,"depth":124,"text":938},{"id":1339,"depth":124,"text":1340},{"id":595,"depth":109,"text":595},{"id":1724,"depth":109,"text":1724},{"id":1837,"depth":109,"text":2478,"children":2479},"auto [a, b] 和 auto& [a, b] 的区别",[2480],{"id":1851,"depth":124,"text":1852},{"id":2198,"depth":109,"text":2198},{"id":2371,"depth":109,"text":2371},{"id":2430,"depth":109,"text":2430},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-6-jie-gou-hua-bang-ding","18.6",18060000,"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-6-结构化绑定",false,null,"/wiki/2023-10-05-cplusplus-jiao-xue/ch18-6-jie-gou-hua-bang-ding","zh-CN","zh-cn",{},{"title":5,"description":81},"k8cvTK5_IZirzgqwz2E8EN_pP7rmdtGZAwuqfw8E6Zs",[2503,2508,2513,2519,2525,2531,2537,2543,2549,2555,2561,2567,2573,2579,2585,2591,2597,2603,2609,2615,2621,2627,2633,2639,2644,2650,2656,2662,2668,2674,2680,2686,2692,2698,2704,2710,2716,2722,2728,2734,2740,2746,2752,2758,2764,2765,2771,2777,2783,2789,2795,2801,2807,2813,2819,2825,2831,2837,2843,2849,2855,2861,2866,2871,2877,2883,2889,2895,2901,2907],{"path":2504,"stem":2505,"title":2506,"date":2487,"chapter":2230,"chapterSort":2507,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch1-c-ji-chu-chu-shi","wiki/2023-10-05-Cplusplus教学/ch1-C++基础初识","C++基础初识",1000000,{"path":2509,"stem":2510,"title":2511,"date":2487,"chapter":441,"chapterSort":2512,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2514,"stem":2515,"title":2516,"date":2487,"chapter":2517,"chapterSort":2518,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch11-yin-yong","wiki/2023-10-05-Cplusplus教学/ch11-引用","引用","11",11000000,{"path":2520,"stem":2521,"title":2522,"date":2487,"chapter":2523,"chapterSort":2524,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2526,"stem":2527,"title":2528,"date":2487,"chapter":2529,"chapterSort":2530,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-1-feng-zhuang","wiki/2023-10-05-Cplusplus教学/ch13-1-封装","封装","13.1",13010000,{"path":2532,"stem":2533,"title":2534,"date":2487,"chapter":2535,"chapterSort":2536,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2538,"stem":2539,"title":2540,"date":2487,"chapter":2541,"chapterSort":2542,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2544,"stem":2545,"title":2546,"date":2487,"chapter":2547,"chapterSort":2548,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2550,"stem":2551,"title":2552,"date":2487,"chapter":2553,"chapterSort":2554,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-5-ji-cheng","wiki/2023-10-05-Cplusplus教学/ch13-5-继承","继承","13.5",13050000,{"path":2556,"stem":2557,"title":2558,"date":2487,"chapter":2559,"chapterSort":2560,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-6-duo-tai","wiki/2023-10-05-Cplusplus教学/ch13-6-多态","多态","13.6",13060000,{"path":2562,"stem":2563,"title":2564,"date":2487,"chapter":2565,"chapterSort":2566,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-lei-he-dui-xiang","wiki/2023-10-05-Cplusplus教学/ch13-类和对象","类和对象","13",13000000,{"path":2568,"stem":2569,"title":2570,"date":2487,"chapter":2571,"chapterSort":2572,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch14-wen-jian-cao-zuo","wiki/2023-10-05-Cplusplus教学/ch14-文件操作","文件操作","14",14000000,{"path":2574,"stem":2575,"title":2576,"date":2487,"chapter":2577,"chapterSort":2578,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch15-mu-ban","wiki/2023-10-05-Cplusplus教学/ch15-模板","模板","15",15000000,{"path":2580,"stem":2581,"title":2582,"date":2487,"chapter":2583,"chapterSort":2584,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2586,"stem":2587,"title":2588,"date":2487,"chapter":2589,"chapterSort":2590,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2592,"stem":2593,"title":2594,"date":2487,"chapter":2595,"chapterSort":2596,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2598,"stem":2599,"title":2600,"date":2487,"chapter":2601,"chapterSort":2602,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2604,"stem":2605,"title":2606,"date":2487,"chapter":2607,"chapterSort":2608,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2610,"stem":2611,"title":2612,"date":2487,"chapter":2613,"chapterSort":2614,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2616,"stem":2617,"title":2618,"date":2487,"chapter":2619,"chapterSort":2620,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2622,"stem":2623,"title":2624,"date":2487,"chapter":2625,"chapterSort":2626,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2628,"stem":2629,"title":2630,"date":2487,"chapter":2631,"chapterSort":2632,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2634,"stem":2635,"title":2636,"date":2487,"chapter":2637,"chapterSort":2638,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2640,"stem":2641,"title":92,"date":2487,"chapter":2642,"chapterSort":2643,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-1-auto","wiki/2023-10-05-Cplusplus教学/ch18-1-auto","18.1",18010000,{"path":2645,"stem":2646,"title":2647,"date":2487,"chapter":2648,"chapterSort":2649,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2651,"stem":2652,"title":2653,"date":2487,"chapter":2654,"chapterSort":2655,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2657,"stem":2658,"title":2659,"date":2487,"chapter":2660,"chapterSort":2661,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2663,"stem":2664,"title":2665,"date":2487,"chapter":2666,"chapterSort":2667,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-13-std-bind","wiki/2023-10-05-Cplusplus教学/ch18-13-std-bind","std::bind","18.13",18130000,{"path":2669,"stem":2670,"title":2671,"date":2487,"chapter":2672,"chapterSort":2673,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2675,"stem":2676,"title":2677,"date":2487,"chapter":2678,"chapterSort":2679,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2681,"stem":2682,"title":2683,"date":2487,"chapter":2684,"chapterSort":2685,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2687,"stem":2688,"title":2689,"date":2487,"chapter":2690,"chapterSort":2691,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2693,"stem":2694,"title":2695,"date":2487,"chapter":2696,"chapterSort":2697,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2699,"stem":2700,"title":2701,"date":2487,"chapter":2702,"chapterSort":2703,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2705,"stem":2706,"title":2707,"date":2487,"chapter":2708,"chapterSort":2709,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2711,"stem":2712,"title":2713,"date":2487,"chapter":2714,"chapterSort":2715,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2717,"stem":2718,"title":2719,"date":2487,"chapter":2720,"chapterSort":2721,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2723,"stem":2724,"title":2725,"date":2487,"chapter":2726,"chapterSort":2727,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2729,"stem":2730,"title":2731,"date":2487,"chapter":2732,"chapterSort":2733,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2735,"stem":2736,"title":2737,"date":2487,"chapter":2738,"chapterSort":2739,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2741,"stem":2742,"title":2743,"date":2487,"chapter":2744,"chapterSort":2745,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2747,"stem":2748,"title":2749,"date":2487,"chapter":2750,"chapterSort":2751,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2753,"stem":2754,"title":2755,"date":2487,"chapter":2756,"chapterSort":2757,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2759,"stem":2760,"title":2761,"date":2487,"chapter":2762,"chapterSort":2763,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2484,"stem":2493,"title":5,"date":2487,"chapter":2485,"chapterSort":2486,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},{"path":2766,"stem":2767,"title":2768,"date":2487,"chapter":2769,"chapterSort":2770,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2772,"stem":2773,"title":2774,"date":2487,"chapter":2775,"chapterSort":2776,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2778,"stem":2779,"title":2780,"date":2487,"chapter":2781,"chapterSort":2782,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2784,"stem":2785,"title":2786,"date":2487,"chapter":2787,"chapterSort":2788,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-xian-dai-c","wiki/2023-10-05-Cplusplus教学/ch18-现代C++","现代C++","18",18000000,{"path":2790,"stem":2791,"title":2792,"date":2487,"chapter":2793,"chapterSort":2794,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2796,"stem":2797,"title":2798,"date":2487,"chapter":2799,"chapterSort":2800,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2802,"stem":2803,"title":2804,"date":2487,"chapter":2805,"chapterSort":2806,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2808,"stem":2809,"title":2810,"date":2487,"chapter":2811,"chapterSort":2812,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2814,"stem":2815,"title":2816,"date":2487,"chapter":2817,"chapterSort":2818,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2820,"stem":2821,"title":2822,"date":2487,"chapter":2823,"chapterSort":2824,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2826,"stem":2827,"title":2828,"date":2487,"chapter":2829,"chapterSort":2830,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2832,"stem":2833,"title":2834,"date":2487,"chapter":2835,"chapterSort":2836,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2838,"stem":2839,"title":2840,"date":2487,"chapter":2841,"chapterSort":2842,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2844,"stem":2845,"title":2846,"date":2487,"chapter":2847,"chapterSort":2848,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2850,"stem":2851,"title":2852,"date":2487,"chapter":2853,"chapterSort":2854,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2856,"stem":2857,"title":2858,"date":2487,"chapter":2859,"chapterSort":2860,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-chang-yong-ku","wiki/2023-10-05-Cplusplus教学/ch19-常用库","常用库学习","19",19000000,{"path":2862,"stem":2863,"title":2864,"date":2487,"chapter":446,"chapterSort":2865,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2867,"stem":2868,"title":2869,"date":2487,"chapter":2239,"chapterSort":2870,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch3-shu-ru-shu-chu","wiki/2023-10-05-Cplusplus教学/ch3-输入输出","输入输出",3000000,{"path":2872,"stem":2873,"title":2874,"date":2487,"chapter":2875,"chapterSort":2876,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch4-yun-suan-fu","wiki/2023-10-05-Cplusplus教学/ch4-运算符","运算符","4",4000000,{"path":2878,"stem":2879,"title":2880,"date":2487,"chapter":2881,"chapterSort":2882,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch5-cheng-xu-liu-cheng-jie-gou","wiki/2023-10-05-Cplusplus教学/ch5-程序流程结构","程序流程结构","5",5000000,{"path":2884,"stem":2885,"title":2886,"date":2487,"chapter":2887,"chapterSort":2888,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch6-shu-zu","wiki/2023-10-05-Cplusplus教学/ch6-数组","数组","6",6000000,{"path":2890,"stem":2891,"title":2892,"date":2487,"chapter":2893,"chapterSort":2894,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch7-han-shu-yu-tou-wen-jian","wiki/2023-10-05-Cplusplus教学/ch7-函数与头文件","函数与头文件","7",7000000,{"path":2896,"stem":2897,"title":2898,"date":2487,"chapter":2899,"chapterSort":2900,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch8-zhi-zhen","wiki/2023-10-05-Cplusplus教学/ch8-指针","指针","8",8000000,{"path":2902,"stem":2903,"title":2904,"date":2487,"chapter":2905,"chapterSort":2906,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":2494},"/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":2490,"stem":2908,"title":2909,"date":2487,"chapter":2495,"chapterSort":2910,"docKey":2489,"docRoot":2490,"docTitle":2491,"isWikiDoc":250,"isWikiIndex":250},"wiki/2023-10-05-Cplusplus教学/index","C/C++教程",0,{"variants":2912},[2913,2916,2919,2922,2925],{"path":2914,"localeSlug":2915,"i18nKey":2493},"/en-us/wiki/2023-10-05-cplusplus-jiao-xue/ch18-6-jie-gou-hua-bang-ding","en-us",{"path":2917,"localeSlug":2918,"i18nKey":2493},"/zh-hant/wiki/2023-10-05-cplusplus-jiao-xue/ch18-6-jie-gou-hua-bang-ding","zh-hant",{"path":2920,"localeSlug":2921,"i18nKey":2493},"/zh-hk/wiki/2023-10-05-cplusplus-jiao-xue/ch18-6-jie-gou-hua-bang-ding","zh-hk",{"path":2923,"localeSlug":2924,"i18nKey":2493},"/zh-tw/wiki/2023-10-05-cplusplus-jiao-xue/ch18-6-jie-gou-hua-bang-ding","zh-tw",{"path":2484,"localeSlug":2498,"i18nKey":2493},[2914,2496,2917,2496,2920,2496,2923,2496,2484,2496],1780663035315]