[{"data":1,"prerenderedAt":2939},["ShallowReactive",2],{"wiki-page-\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0100-auto":3,"wiki-doc-items-2023-10-05-cplusplus-jiao-xue":2552},{"id":4,"title":5,"body":6,"chapterDepth":31,"chapterOrder":2540,"date":2541,"description":23,"docKey":2542,"docRoot":2543,"docTitle":2544,"extension":2545,"isWikiDoc":490,"isWikiIndex":2546,"meta":2547,"navigation":490,"path":2548,"seo":2549,"stem":2550,"wikiDepth":31,"__hash__":2551},"wiki\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0100-auto.md","auto",{"type":7,"value":8,"toc":2519},"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,2096,2100,2106,2108,2111,2114,2251,2254,2262,2306,2312,2320,2347,2353,2361,2389,2392,2397,2419,2429,2432,2479,2482,2515],[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_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    return 0;\n}\n",[25,1704,1705,1711,1715,1729,1733,1743,1747,1754,1758,1762,1767,1776,1780,1788,1792,1796,1801,1818,1822,1830,1834,1838,1846,1850,1866,1877,1902,1906,1921,1931,1956,1960,1975,1986,2011,2016,2039,2051,2077,2082,2091],{"__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_ref",[28,1742,501],{"class":38},[28,1744,1745],{"class":30,"line":510},[28,1746,507],{"class":38},[28,1748,1749,1751],{"class":30,"line":531},[28,1750,738],{"class":67},[28,1752,1753],{"class":38}," global_score;\n",[28,1755,1756],{"class":30,"line":549},[28,1757,749],{"class":38},[28,1759,1760],{"class":30,"line":567},[28,1761,491],{"emptyLinePlaceholder":490},[28,1763,1764],{"class":30,"line":585},[28,1765,1766],{"class":177},"\u002F\u002F auto 作为函数返回类型时，会按\"值\"返回，引用会被丢掉\n",[28,1768,1769,1771,1774],{"class":30,"line":613},[28,1770,5],{"class":67},[28,1772,1773],{"class":34}," read_score",[28,1775,501],{"class":38},[28,1777,1778],{"class":30,"line":618},[28,1779,507],{"class":38},[28,1781,1782,1784,1786],{"class":30,"line":652},[28,1783,738],{"class":67},[28,1785,1740],{"class":34},[28,1787,83],{"class":38},[28,1789,1790],{"class":30,"line":678},[28,1791,749],{"class":38},[28,1793,1794],{"class":30,"line":704},[28,1795,491],{"emptyLinePlaceholder":490},[28,1797,1798],{"class":30,"line":730},[28,1799,1800],{"class":177},"\u002F\u002F decltype(auto) 会保留 score_ref() 的 int& 返回类型\n",[28,1802,1803,1806,1808,1810,1813,1816],{"class":30,"line":735},[28,1804,1805],{"class":67},"decltype",[28,1807,601],{"class":38},[28,1809,5],{"class":67},[28,1811,1812],{"class":38},") ",[28,1814,1815],{"class":34},"borrow_score",[28,1817,501],{"class":38},[28,1819,1820],{"class":30,"line":746},[28,1821,507],{"class":38},[28,1823,1824,1826,1828],{"class":30,"line":967},[28,1825,738],{"class":67},[28,1827,1740],{"class":34},[28,1829,83],{"class":38},[28,1831,1832],{"class":30,"line":976},[28,1833,749],{"class":38},[28,1835,1836],{"class":30,"line":1243},[28,1837,491],{"emptyLinePlaceholder":490},[28,1839,1840,1842,1844],{"class":30,"line":1248},[28,1841,68],{"class":67},[28,1843,498],{"class":34},[28,1845,501],{"class":38},[28,1847,1848],{"class":30,"line":1267},[28,1849,507],{"class":38},[28,1851,1852,1854,1856,1858,1860,1863],{"class":30,"line":1272},[28,1853,513],{"class":67},[28,1855,821],{"class":38},[28,1857,74],{"class":67},[28,1859,1740],{"class":34},[28,1861,1862],{"class":38},"();",[28,1864,1865],{"class":177},"       \u002F\u002F a 是 int，拷贝\n",[28,1867,1868,1870,1872,1875],{"class":30,"line":1289},[28,1869,869],{"class":38},[28,1871,74],{"class":67},[28,1873,1874],{"class":521}," 90",[28,1876,649],{"class":38},[28,1878,1879,1881,1883,1885,1888,1890,1892,1894,1896,1898,1900],{"class":30,"line":1294},[28,1880,621],{"class":34},[28,1882,624],{"class":38},[28,1884,627],{"class":67},[28,1886,1887],{"class":477}," \"after auto a = 90, global_score = \"",[28,1889,633],{"class":67},[28,1891,1721],{"class":38},[28,1893,627],{"class":67},[28,1895,640],{"class":477},[28,1897,643],{"class":521},[28,1899,646],{"class":477},[28,1901,649],{"class":38},[28,1903,1904],{"class":30,"line":1300},[28,1905,491],{"emptyLinePlaceholder":490},[28,1907,1908,1910,1912,1914,1916,1918],{"class":30,"line":1328},[28,1909,834],{"class":67},[28,1911,837],{"class":38},[28,1913,74],{"class":67},[28,1915,1740],{"class":34},[28,1917,1862],{"class":38},[28,1919,1920],{"class":177},"      \u002F\u002F b 是 int&，引用\n",[28,1922,1923,1925,1927,1929],{"class":30,"line":1357},[28,1924,913],{"class":38},[28,1926,74],{"class":67},[28,1928,1874],{"class":521},[28,1930,649],{"class":38},[28,1932,1933,1935,1937,1939,1942,1944,1946,1948,1950,1952,1954],{"class":30,"line":1362},[28,1934,621],{"class":34},[28,1936,624],{"class":38},[28,1938,627],{"class":67},[28,1940,1941],{"class":477}," \"after auto& b = 90, global_score = \"",[28,1943,633],{"class":67},[28,1945,1721],{"class":38},[28,1947,627],{"class":67},[28,1949,640],{"class":477},[28,1951,643],{"class":521},[28,1953,646],{"class":477},[28,1955,649],{"class":38},[28,1957,1958],{"class":30,"line":1371},[28,1959,491],{"emptyLinePlaceholder":490},[28,1961,1962,1964,1966,1968,1970,1972],{"class":30,"line":1669},[28,1963,513],{"class":67},[28,1965,554],{"class":38},[28,1967,74],{"class":67},[28,1969,1773],{"class":34},[28,1971,1862],{"class":38},[28,1973,1974],{"class":177},"      \u002F\u002F c 是 int，read_score 本身也返回拷贝\n",[28,1976,1977,1980,1982,1984],{"class":30,"line":1674},[28,1978,1979],{"class":38},"    c ",[28,1981,74],{"class":67},[28,1983,874],{"class":521},[28,1985,649],{"class":38},[28,1987,1988,1990,1992,1994,1997,1999,2001,2003,2005,2007,2009],{"class":30,"line":1683},[28,1989,621],{"class":34},[28,1991,624],{"class":38},[28,1993,627],{"class":67},[28,1995,1996],{"class":477}," \"after auto c = 100, global_score = \"",[28,1998,633],{"class":67},[28,2000,1721],{"class":38},[28,2002,627],{"class":67},[28,2004,640],{"class":477},[28,2006,643],{"class":521},[28,2008,646],{"class":477},[28,2010,649],{"class":38},[28,2012,2014],{"class":30,"line":2013},35,[28,2015,491],{"emptyLinePlaceholder":490},[28,2017,2019,2022,2024,2026,2029,2031,2034,2036],{"class":30,"line":2018},36,[28,2020,2021],{"class":67},"    decltype",[28,2023,601],{"class":38},[28,2025,5],{"class":67},[28,2027,2028],{"class":38},") d ",[28,2030,74],{"class":67},[28,2032,2033],{"class":34}," borrow_score",[28,2035,1862],{"class":38},[28,2037,2038],{"class":177}," \u002F\u002F d 是 int&，仍然引用 global_score\n",[28,2040,2042,2045,2047,2049],{"class":30,"line":2041},37,[28,2043,2044],{"class":38},"    d ",[28,2046,74],{"class":67},[28,2048,874],{"class":521},[28,2050,649],{"class":38},[28,2052,2054,2056,2058,2060,2063,2065,2067,2069,2071,2073,2075],{"class":30,"line":2053},38,[28,2055,621],{"class":34},[28,2057,624],{"class":38},[28,2059,627],{"class":67},[28,2061,2062],{"class":477}," \"after decltype(auto) d = 100, global_score = \"",[28,2064,633],{"class":67},[28,2066,1721],{"class":38},[28,2068,627],{"class":67},[28,2070,640],{"class":477},[28,2072,643],{"class":521},[28,2074,646],{"class":477},[28,2076,649],{"class":38},[28,2078,2080],{"class":30,"line":2079},39,[28,2081,491],{"emptyLinePlaceholder":490},[28,2083,2085,2087,2089],{"class":30,"line":2084},40,[28,2086,738],{"class":67},[28,2088,741],{"class":521},[28,2090,649],{"class":38},[28,2092,2094],{"class":30,"line":2093},41,[28,2095,749],{"class":38},[14,2097,2098,756],{},[753,2099,755],{},[18,2101,2104],{"className":2102,"code":2103,"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\n",[25,2105,2103],{"__ignoreMap":23},[10,2107,755],{"id":755},[14,2109,2110],{},"见上方每个示例的\"运行结果\"。",[10,2112,2113],{"id":2113},"示例中的关键语法解释",[232,2115,2116,2134],{},[235,2117,2118],{},[238,2119,2120,2122,2125,2128,2131],{},[241,2121,250],{"align":243},[241,2123,2124],{"align":243},"讲了什么",[241,2126,2127],{"align":243},"新出现的语法",[241,2129,2130],{"align":243},"为什么这样写",[241,2132,2133],{"align":243},"注意事项",[252,2135,2136,2158,2184,2201,2225],{},[238,2137,2138,2141,2144,2149,2152],{},[257,2139,2140],{"align":243},"示例 1",[257,2142,2143],{"align":243},"基本类型推导",[257,2145,2146],{"align":243},[25,2147,2148],{},"auto x = 表达式",[257,2150,2151],{"align":243},"最简单的情况，类型由初始化值决定",[257,2153,2154,2155],{"align":243},"字符串字面量推导为 ",[25,2156,2157],{},"const char*",[238,2159,2160,2163,2166,2173,2181],{},[257,2161,2162],{"align":243},"示例 2",[257,2164,2165],{"align":243},"auto vs auto& vs const auto&",[257,2167,2168,2170,2171],{"align":243},[25,2169,201],{},"、",[25,2172,305],{},[257,2174,2175,2177,2178,2180],{"align":243},[25,2176,5],{}," 会丢失引用和顶层 const，要用 ",[25,2179,201],{}," 才能引用原变量",[257,2182,2183],{"align":243},"遍历容器元素时要注意",[238,2185,2186,2189,2192,2195,2198],{},[257,2187,2188],{"align":243},"示例 3",[257,2190,2191],{"align":243},"简化复杂类型",[257,2193,2194],{"align":243},"迭代器、智能指针用 auto",[257,2196,2197],{"align":243},"类型名太长时用 auto 保持可读性",[257,2199,2200],{"align":243},"auto 不弱化类型安全，只是让编译器帮你写",[238,2202,2203,2206,2209,2212,2220],{},[257,2204,2205],{"align":243},"示例 4",[257,2207,2208],{"align":243},"auto 遍历时的拷贝陷阱",[257,2210,2211],{"align":243},"范围 for + auto\u002Fauto&",[257,2213,2214,2216,2217,2219],{"align":243},[25,2215,5],{}," 遍历拷贝元素，",[25,2218,201],{}," 引用元素",[257,2221,2222,2223],{"align":243},"想修改原容器必须用 ",[25,2224,201],{},[238,2226,2227,2230,2233,2240,2246],{},[257,2228,2229],{"align":243},"示例 5",[257,2231,2232],{"align":243},"auto 返回值 vs decltype(auto)",[257,2234,2235,2237,2238],{"align":243},[25,2236,5],{}," 函数返回、",[25,2239,335],{},[257,2241,2242,2243,2245],{"align":243},"函数返回引用时，普通 ",[25,2244,5],{}," 会退化成值返回",[257,2247,2248,2250],{"align":243},[25,2249,335],{}," 很强，但也要确认不会返回悬垂引用",[10,2252,2253],{"id":2253},"常见错误",[14,2255,2256],{},[753,2257,2258,2259,2261],{},"错误 1：以为 ",[25,2260,5],{}," 能自动推导为引用",[18,2263,2265],{"className":20,"code":2264,"language":22,"meta":23,"style":23},"int x = 10;\nauto y = x;\ny = 20;  \u002F\u002F x 不会变！y 是拷贝不是引用\n",[25,2266,2267,2279,2291],{"__ignoreMap":23},[28,2268,2269,2271,2273,2275,2277],{"class":30,"line":31},[28,2270,68],{"class":67},[28,2272,803],{"class":38},[28,2274,74],{"class":67},[28,2276,808],{"class":521},[28,2278,649],{"class":38},[28,2280,2281,2283,2286,2288],{"class":30,"line":86},[28,2282,5],{"class":67},[28,2284,2285],{"class":38}," y ",[28,2287,74],{"class":67},[28,2289,2290],{"class":38}," x;\n",[28,2292,2293,2296,2298,2301,2303],{"class":30,"line":198},[28,2294,2295],{"class":38},"y ",[28,2297,74],{"class":67},[28,2299,2300],{"class":521}," 20",[28,2302,525],{"class":38},[28,2304,2305],{"class":177},"  \u002F\u002F x 不会变！y 是拷贝不是引用\n",[14,2307,2308,2309,2311],{},"正确做法：需要修改原变量用 ",[25,2310,201],{},"。",[14,2313,2314],{},[753,2315,2316,2317,2319],{},"错误 2：用 ",[25,2318,5],{}," 声明函数参数",[18,2321,2323],{"className":20,"code":2322,"language":22,"meta":23,"style":23},"void func(auto x) { ... }  \u002F\u002F C++20 之前是错误！（除非是泛型 lambda）\n",[25,2324,2325],{"__ignoreMap":23},[28,2326,2327,2330,2333,2335,2337,2341,2344],{"class":30,"line":31},[28,2328,2329],{"class":67},"void",[28,2331,2332],{"class":34}," func",[28,2334,601],{"class":38},[28,2336,5],{"class":67},[28,2338,2340],{"class":2339},"s4XuR"," x",[28,2342,2343],{"class":38},") { ... }",[28,2345,2346],{"class":177},"  \u002F\u002F C++20 之前是错误！（除非是泛型 lambda）\n",[14,2348,2349,2350,2352],{},"正确做法：普通函数参数不能用 ",[25,2351,5],{},"（C++20 允许，但那是模板语法）。",[14,2354,2355],{},[753,2356,2357,2358,2360],{},"错误 3：",[25,2359,5],{}," 不能用于多变量声明",[18,2362,2364],{"className":20,"code":2363,"language":22,"meta":23,"style":23},"auto x = 1, y = 3.14;  \u002F\u002F ❌ 编译错误！推导类型不一致\n",[25,2365,2366],{"__ignoreMap":23},[28,2367,2368,2370,2372,2374,2377,2380,2382,2384,2386],{"class":30,"line":31},[28,2369,5],{"class":67},[28,2371,803],{"class":38},[28,2373,74],{"class":67},[28,2375,2376],{"class":521}," 1",[28,2378,2379],{"class":38},", y ",[28,2381,74],{"class":67},[28,2383,541],{"class":521},[28,2385,525],{"class":38},[28,2387,2388],{"class":177},"  \u002F\u002F ❌ 编译错误！推导类型不一致\n",[14,2390,2391],{},"正确做法：每个 auto 变量各自声明。",[14,2393,2394],{},[753,2395,2396],{},"错误 4：滥用 auto 让业务含义消失",[18,2398,2400],{"className":20,"code":2399,"language":22,"meta":23,"style":23},"auto timeout = 3000;  \u002F\u002F 3000 是毫秒？秒？次数？\n",[25,2401,2402],{"__ignoreMap":23},[28,2403,2404,2406,2409,2411,2414,2416],{"class":30,"line":31},[28,2405,5],{"class":67},[28,2407,2408],{"class":38}," timeout ",[28,2410,74],{"class":67},[28,2412,2413],{"class":521}," 3000",[28,2415,525],{"class":38},[28,2417,2418],{"class":177},"  \u002F\u002F 3000 是毫秒？秒？次数？\n",[14,2420,2421,2422,2425,2426,2311],{},"正确做法：类型或命名要能表达含义。例如 ",[25,2423,2424],{},"std::chrono::milliseconds timeout{3000};","，或者至少写成 ",[25,2427,2428],{},"auto timeout_ms = 3000;",[10,2430,2431],{"id":2431},"使用建议",[2433,2434,2435,2442,2453,2463,2471],"ol",{},[2436,2437,2438,2441],"li",{},[753,2439,2440],{},"能用 auto 的地方尽量用","：减少重复类型声明，让代码更简洁。",[2436,2443,2444,2449,2450,2452],{},[753,2445,2446,2447],{},"遍历容器要用 ",[25,2448,305],{},"（不修改）或 ",[25,2451,201],{},"（需要修改），避免意外拷贝。",[2436,2454,2455,756,2460,2462],{},[753,2456,2457,2458],{},"明确需要引用的地方要写 ",[25,2459,201],{},[25,2461,5],{}," 不会自动推导出引用。",[2436,2464,2465,2470],{},[753,2466,2467,2469],{},[25,2468,5],{}," 不能完全替代显式类型","：当类型不明显时（如从函数返回值推导），显式写类型可能更清晰。",[2436,2472,2473,2478],{},[753,2474,2475,2477],{},[25,2476,335],{}," 只在确实要保留引用时使用","：它更精确，也更容易把悬垂引用暴露出来。",[10,2480,2481],{"id":2481},"小结",[2483,2484,2485,2490,2500,2503,2510],"ul",{},[2436,2486,2487,2489],{},[25,2488,5],{}," 让编译器自动推导变量类型，减少冗长类型声明。",[2436,2491,2492,2494,2495,2497,2498,2311],{},[25,2493,5],{}," 会丢失引用和顶层 const，遍历容器要用 ",[25,2496,305],{}," 或 ",[25,2499,201],{},[2436,2501,2502],{},"特别适合简化迭代器、智能指针等复杂类型。",[2436,2504,2505,2507,2508,2311],{},[25,2506,5],{}," 函数返回值默认按值返回；要保留引用语义时用 ",[25,2509,335],{},[2436,2511,2512,2514],{},[25,2513,5],{}," 仍然是强类型的，编译期类型就确定了。",[2516,2517,2518],"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":2520},[2521,2522,2523,2524,2525,2526,2527,2528,2535,2536,2537,2538,2539],{"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":2529},[2530,2531,2532,2533,2534],{"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":755,"depth":86,"text":755},{"id":2113,"depth":86,"text":2113},{"id":2253,"depth":86,"text":2253},{"id":2431,"depth":86,"text":2431},{"id":2481,"depth":86,"text":2481},"2000-0100","2023-10-05","2023-10-05-cplusplus-jiao-xue","\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue","Cplusplus教学","md",false,{},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0100-auto",{"title":5,"description":23},"wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0100-auto","xuqm5Tvuy5IEi1XbfMSQLPoy-T5YPqXsmwvvu71fX-0",[2553,2559,2564,2569,2574,2579,2584,2589,2594,2599,2604,2609,2614,2619,2624,2629,2634,2639,2644,2649,2654,2659,2664,2669,2674,2679,2684,2689,2694,2699,2704,2709,2714,2719,2720,2725,2730,2735,2740,2745,2750,2755,2760,2765,2770,2775,2780,2785,2790,2795,2800,2805,2810,2815,2820,2825,2830,2835,2840,2845,2850,2855,2860,2865,2870,2875,2880,2885,2890,2895,2900,2905,2910,2915,2920,2925,2930,2935],{"path":2554,"stem":2555,"title":2556,"date":2541,"chapterOrder":2557,"chapterDepth":2558,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2560,"stem":2561,"title":2562,"date":2541,"chapterOrder":2563,"chapterDepth":2558,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0200-c-ji-chu-chu-shi","wiki\u002F2023-10-05-Cplusplus教学\u002F0200-C++基础初识","C++基础初识","0200",{"path":2565,"stem":2566,"title":2567,"date":2541,"chapterOrder":2568,"chapterDepth":2558,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2570,"stem":2571,"title":2572,"date":2541,"chapterOrder":2573,"chapterDepth":2558,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0400-shu-ru-shu-chu","wiki\u002F2023-10-05-Cplusplus教学\u002F0400-输入输出","输入输出","0400",{"path":2575,"stem":2576,"title":2577,"date":2541,"chapterOrder":2578,"chapterDepth":2558,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0500-yun-suan-fu","wiki\u002F2023-10-05-Cplusplus教学\u002F0500-运算符","运算符","0500",{"path":2580,"stem":2581,"title":2582,"date":2541,"chapterOrder":2583,"chapterDepth":2558,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0600-cheng-xu-liu-cheng-jie-gou","wiki\u002F2023-10-05-Cplusplus教学\u002F0600-程序流程结构","程序流程结构","0600",{"path":2585,"stem":2586,"title":2587,"date":2541,"chapterOrder":2588,"chapterDepth":2558,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0700-shu-zu","wiki\u002F2023-10-05-Cplusplus教学\u002F0700-数组","数组","0700",{"path":2590,"stem":2591,"title":2592,"date":2541,"chapterOrder":2593,"chapterDepth":2558,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0800-han-shu-yu-tou-wen-jian","wiki\u002F2023-10-05-Cplusplus教学\u002F0800-函数与头文件","函数与头文件","0800",{"path":2595,"stem":2596,"title":2597,"date":2541,"chapterOrder":2598,"chapterDepth":2558,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0900-zhi-zhen","wiki\u002F2023-10-05-Cplusplus教学\u002F0900-指针","指针","0900",{"path":2600,"stem":2601,"title":2602,"date":2541,"chapterOrder":2603,"chapterDepth":2558,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1000-jie-gou-ti-yu-gong-yong-ti","wiki\u002F2023-10-05-Cplusplus教学\u002F1000-结构体与共用体","结构体与共用体","1000",{"path":2605,"stem":2606,"title":2607,"date":2541,"chapterOrder":2608,"chapterDepth":2558,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2610,"stem":2611,"title":2612,"date":2541,"chapterOrder":2613,"chapterDepth":2558,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1200-yin-yong","wiki\u002F2023-10-05-Cplusplus教学\u002F1200-引用","引用","1200",{"path":2615,"stem":2616,"title":2617,"date":2541,"chapterOrder":2618,"chapterDepth":2558,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2620,"stem":2621,"title":2622,"date":2541,"chapterOrder":2623,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0100-feng-zhuang","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0100-封装","封装","1400-0100",{"path":2625,"stem":2626,"title":2627,"date":2541,"chapterOrder":2628,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2630,"stem":2631,"title":2632,"date":2541,"chapterOrder":2633,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2635,"stem":2636,"title":2637,"date":2541,"chapterOrder":2638,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2640,"stem":2641,"title":2642,"date":2541,"chapterOrder":2643,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0500-ji-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0500-继承","继承","1400-0500",{"path":2645,"stem":2646,"title":2647,"date":2541,"chapterOrder":2648,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0600-duo-tai","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0600-多态","多态","1400-0600",{"path":2650,"stem":2651,"title":2652,"date":2541,"chapterOrder":2653,"chapterDepth":2558,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-lei-he-dui-xiang","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-类和对象","类和对象","1400",{"path":2655,"stem":2656,"title":2657,"date":2541,"chapterOrder":2658,"chapterDepth":2558,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1500-wen-jian-cao-zuo","wiki\u002F2023-10-05-Cplusplus教学\u002F1500-文件操作","文件操作","1500",{"path":2660,"stem":2661,"title":2662,"date":2541,"chapterOrder":2663,"chapterDepth":2558,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1600-yi-chang-chu-li-yu-cuo-wu-ma","wiki\u002F2023-10-05-Cplusplus教学\u002F1600-异常处理与错误码","异常处理","1600",{"path":2665,"stem":2666,"title":2667,"date":2541,"chapterOrder":2668,"chapterDepth":2558,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1700-mu-ban","wiki\u002F2023-10-05-Cplusplus教学\u002F1700-模板","模板","1700",{"path":2670,"stem":2671,"title":2672,"date":2541,"chapterOrder":2673,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0100-stl-chu-shi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0100-STL初识","STL初识","1800-0100",{"path":2675,"stem":2676,"title":2677,"date":2541,"chapterOrder":2678,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2680,"stem":2681,"title":2682,"date":2541,"chapterOrder":2683,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0300-string-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0300-string容器","string容器","1800-0300",{"path":2685,"stem":2686,"title":2687,"date":2541,"chapterOrder":2688,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0400-vector-yu-deque-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0400-vector与deque容器","vector与deque容器","1800-0400",{"path":2690,"stem":2691,"title":2692,"date":2541,"chapterOrder":2693,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0500-stack-queue-list-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0500-stack-queue-list容器","stack \u002F queue \u002F list 容器","1800-0500",{"path":2695,"stem":2696,"title":2697,"date":2541,"chapterOrder":2698,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0600-set-map-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0600-set-map容器","set \u002F map 容器","1800-0600",{"path":2700,"stem":2701,"title":2702,"date":2541,"chapterOrder":2703,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0700-han-shu-dui-xiang-yu-wei-ci","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0700-函数对象与谓词","函数对象与谓词","1800-0700",{"path":2705,"stem":2706,"title":2707,"date":2541,"chapterOrder":2708,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0800-chang-yong-suan-fa","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0800-常用算法","常用算法","1800-0800",{"path":2710,"stem":2711,"title":2712,"date":2541,"chapterOrder":2713,"chapterDepth":2558,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-stl-ti-gao-bian-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-STL提高编程","STL提高编程","1800",{"path":2715,"stem":2716,"title":2717,"date":2541,"chapterOrder":2718,"chapterDepth":2558,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1900-c-lei-xing-zhuan-huan","wiki\u002F2023-10-05-Cplusplus教学\u002F1900-C++类型转换","C++类型转换","1900",{"path":2548,"stem":2550,"title":5,"date":2541,"chapterOrder":2540,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},{"path":2721,"stem":2722,"title":2723,"date":2541,"chapterOrder":2724,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0200-nullptr","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0200-nullptr","nullptr","2000-0200",{"path":2726,"stem":2727,"title":2728,"date":2541,"chapterOrder":2729,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0300-using","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0300-using","using","2000-0300",{"path":2731,"stem":2732,"title":2733,"date":2541,"chapterOrder":2734,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2736,"stem":2737,"title":2738,"date":2541,"chapterOrder":2739,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2741,"stem":2742,"title":2743,"date":2541,"chapterOrder":2744,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0600-jie-gou-hua-bang-ding","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0600-结构化绑定","结构化绑定","2000-0600",{"path":2746,"stem":2747,"title":2748,"date":2541,"chapterOrder":2749,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0700-constexpr","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0700-constexpr","constexpr","2000-0700",{"path":2751,"stem":2752,"title":2753,"date":2541,"chapterOrder":2754,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0800-raii","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0800-RAII","RAII","2000-0800",{"path":2756,"stem":2757,"title":2758,"date":2541,"chapterOrder":2759,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0900-zhi-neng-zhi-zhen","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0900-智能指针","智能指针","2000-0900",{"path":2761,"stem":2762,"title":2763,"date":2541,"chapterOrder":2764,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2766,"stem":2767,"title":2768,"date":2541,"chapterOrder":2769,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2771,"stem":2772,"title":2773,"date":2541,"chapterOrder":2774,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2776,"stem":2777,"title":2778,"date":2541,"chapterOrder":2779,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2781,"stem":2782,"title":2783,"date":2541,"chapterOrder":2784,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2786,"stem":2787,"title":2788,"date":2541,"chapterOrder":2789,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2791,"stem":2792,"title":2793,"date":2541,"chapterOrder":2794,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2796,"stem":2797,"title":2798,"date":2541,"chapterOrder":2799,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2801,"stem":2802,"title":2803,"date":2541,"chapterOrder":2804,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2806,"stem":2807,"title":2808,"date":2541,"chapterOrder":2809,"chapterDepth":86,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2811,"stem":2812,"title":2813,"date":2541,"chapterOrder":2814,"chapterDepth":86,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2816,"stem":2817,"title":2818,"date":2541,"chapterOrder":2819,"chapterDepth":86,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2821,"stem":2822,"title":2823,"date":2541,"chapterOrder":2824,"chapterDepth":86,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2826,"stem":2827,"title":2828,"date":2541,"chapterOrder":2829,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-bing-fa-bian-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-并发编程","并发编程","2000-1900",{"path":2831,"stem":2832,"title":2833,"date":2541,"chapterOrder":2834,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2836,"stem":2837,"title":2838,"date":2541,"chapterOrder":2839,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2100-modules-jian-jie","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-2100-modules简介","modules 简介","2000-2100",{"path":2841,"stem":2842,"title":2843,"date":2541,"chapterOrder":2844,"chapterDepth":2558,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-xian-dai-c","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-现代C++","现代C++","2000",{"path":2846,"stem":2847,"title":2848,"date":2541,"chapterOrder":2849,"chapterDepth":86,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2851,"stem":2852,"title":2853,"date":2541,"chapterOrder":2854,"chapterDepth":86,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2856,"stem":2857,"title":2858,"date":2541,"chapterOrder":2859,"chapterDepth":86,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2861,"stem":2862,"title":2863,"date":2541,"chapterOrder":2864,"chapterDepth":86,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2866,"stem":2867,"title":2868,"date":2541,"chapterOrder":2869,"chapterDepth":86,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2871,"stem":2872,"title":2873,"date":2541,"chapterOrder":2874,"chapterDepth":86,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2876,"stem":2877,"title":2878,"date":2541,"chapterOrder":2879,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2881,"stem":2882,"title":2883,"date":2541,"chapterOrder":2884,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2886,"stem":2887,"title":2888,"date":2541,"chapterOrder":2889,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2891,"stem":2892,"title":2893,"date":2541,"chapterOrder":2894,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2896,"stem":2897,"title":2898,"date":2541,"chapterOrder":2899,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2901,"stem":2902,"title":2903,"date":2541,"chapterOrder":2904,"chapterDepth":2558,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-chang-yong-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-常用库","常用库学习","2100",{"path":2906,"stem":2907,"title":2908,"date":2541,"chapterOrder":2909,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2911,"stem":2912,"title":2913,"date":2541,"chapterOrder":2914,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2916,"stem":2917,"title":2918,"date":2541,"chapterOrder":2919,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2921,"stem":2922,"title":2923,"date":2541,"chapterOrder":2924,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2926,"stem":2927,"title":2928,"date":2541,"chapterOrder":2929,"chapterDepth":31,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\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":2931,"stem":2932,"title":2933,"date":2541,"chapterOrder":2934,"chapterDepth":2558,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":2546},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-cmake-gong-cheng-mu-ban","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-CMake工程模板","CMake工程模板","2200",{"path":2543,"stem":2936,"title":2937,"date":2541,"chapterOrder":2938,"chapterDepth":2558,"docKey":2542,"docRoot":2543,"docTitle":2544,"isWikiDoc":490,"isWikiIndex":490},"wiki\u002F2023-10-05-Cplusplus教学\u002Findex","C\u002FC++教程",null,1784505234046]