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