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