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