[{"data":1,"prerenderedAt":2598},["ShallowReactive",2],{"wiki-page-\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0500-fan-wei-for-xun-huan":3,"wiki-doc-items-2023-10-05-cplusplus-jiao-xue":2212},{"id":4,"title":5,"body":6,"chapterDepth":72,"chapterOrder":2200,"date":2201,"description":65,"docKey":2202,"docRoot":2203,"docTitle":2204,"extension":2205,"isWikiDoc":104,"isWikiIndex":2206,"meta":2207,"navigation":104,"path":2208,"seo":2209,"stem":2210,"wikiDepth":72,"__hash__":2211},"wiki\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0500-范围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()"," \u002F ",[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    \u002F\u002F 使用变量名\n}\n\n\u002F\u002F 推荐：不修改元素用 const auto&\nfor (const auto& 变量名 : 容器)\n{\n    \u002F\u002F 只读访问\n}\n\n\u002F\u002F 要修改元素用 auto&\nfor (auto& 变量名 : 容器)\n{\n    \u002F\u002F 可以修改元素\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","    \u002F\u002F 使用变量名\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},"\u002F\u002F 推荐：不修改元素用 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},"    \u002F\u002F 只读访问\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},"\u002F\u002F 要修改元素用 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},"    \u002F\u002F 可以修改元素\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\u002Fdouble 等）",[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},"迭代器循环 \u002F 算法",[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    \u002F\u002F 范围 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},"    \u002F\u002F 范围 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    \u002F\u002F 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        \u002F\u002F s = \"X\";  \u002F\u002F ❌ 编译错误！const 引用不能修改\n    }\n    std::cout \u003C\u003C \"\\n\";\n\n    \u002F\u002F auto&：可修改遍历\n    for (auto& s : names)\n    {\n        s = s + \"!\";  \u002F\u002F 修改原容器中的元素\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},"    \u002F\u002F 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},"        \u002F\u002F s = \"X\";",[69,721,722],{"class":91},"  \u002F\u002F ❌ 编译错误！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},"    \u002F\u002F 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},"  \u002F\u002F 修改原容器中的元素\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    \u002F\u002F 直接遍历初始值列表\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    \u002F\u002F 遍历 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},"    \u002F\u002F 直接遍历初始值列表\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},"    \u002F\u002F 遍历 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    \u002F\u002F 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},"    \u002F\u002F 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    \u002F\u002F 程序从 main 函数开始执行，下面的语句会按顺序运行。\n    \u002F\u002F 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},"    \u002F\u002F 程序从 main 函数开始执行，下面的语句会按顺序运行。\n",[69,1490,1491],{"class":71,"line":136},[69,1492,1493],{"class":91},"    \u002F\u002F 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\u002Fvalue 分别起名更清晰",[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);  \u002F\u002F ❌ 可能导致迭代器失效、无限循环！\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},"  \u002F\u002F ❌ 可能导致迭代器失效、无限循环！\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\";  \u002F\u002F 修改的是拷贝！\n}\n\u002F\u002F 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},"  \u002F\u002F 修改的是拷贝！\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},"\u002F\u002F 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;  \u002F\u002F 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},"  \u002F\u002F 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\u002Fdouble）且不修改：可以用 ",[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},"2000-0500","2023-10-05","2023-10-05-cplusplus-jiao-xue","\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue","Cplusplus教学","md",false,{},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0500-fan-wei-for-xun-huan",{"title":5,"description":65},"wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0500-范围for循环","ITRRVdbYXgtvXD3jA-K5tofHn_6yoR8OQRoIJ6Wy_7M",[2213,2219,2224,2229,2234,2239,2244,2249,2254,2259,2264,2269,2274,2279,2284,2289,2294,2299,2304,2309,2314,2319,2324,2329,2334,2339,2344,2349,2354,2359,2364,2369,2374,2379,2383,2388,2393,2398,2399,2404,2409,2414,2419,2424,2429,2434,2439,2444,2449,2454,2459,2464,2469,2474,2479,2484,2489,2494,2499,2504,2509,2514,2519,2524,2529,2534,2539,2544,2549,2554,2559,2564,2569,2574,2579,2584,2589,2594],{"path":2214,"stem":2215,"title":2216,"date":2201,"chapterOrder":2217,"chapterDepth":2218,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0100-c-kai-fa-huan-jing-da-jian-yu-ce-shi","wiki\u002F2023-10-05-Cplusplus教学\u002F0100-C++开发环境搭建与测试","C++开发环境搭建与测试","0100",0,{"path":2220,"stem":2221,"title":2222,"date":2201,"chapterOrder":2223,"chapterDepth":2218,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0200-c-ji-chu-chu-shi","wiki\u002F2023-10-05-Cplusplus教学\u002F0200-C++基础初识","C++基础初识","0200",{"path":2225,"stem":2226,"title":2227,"date":2201,"chapterOrder":2228,"chapterDepth":2218,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0300-shu-ju-lei-xing-yu-shu-ju-cun-fang","wiki\u002F2023-10-05-Cplusplus教学\u002F0300-数据类型与数据存放","数据类型与数据存放","0300",{"path":2230,"stem":2231,"title":2232,"date":2201,"chapterOrder":2233,"chapterDepth":2218,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0400-shu-ru-shu-chu","wiki\u002F2023-10-05-Cplusplus教学\u002F0400-输入输出","输入输出","0400",{"path":2235,"stem":2236,"title":2237,"date":2201,"chapterOrder":2238,"chapterDepth":2218,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0500-yun-suan-fu","wiki\u002F2023-10-05-Cplusplus教学\u002F0500-运算符","运算符","0500",{"path":2240,"stem":2241,"title":2242,"date":2201,"chapterOrder":2243,"chapterDepth":2218,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0600-cheng-xu-liu-cheng-jie-gou","wiki\u002F2023-10-05-Cplusplus教学\u002F0600-程序流程结构","程序流程结构","0600",{"path":2245,"stem":2246,"title":2247,"date":2201,"chapterOrder":2248,"chapterDepth":2218,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0700-shu-zu","wiki\u002F2023-10-05-Cplusplus教学\u002F0700-数组","数组","0700",{"path":2250,"stem":2251,"title":2252,"date":2201,"chapterOrder":2253,"chapterDepth":2218,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0800-han-shu-yu-tou-wen-jian","wiki\u002F2023-10-05-Cplusplus教学\u002F0800-函数与头文件","函数与头文件","0800",{"path":2255,"stem":2256,"title":2257,"date":2201,"chapterOrder":2258,"chapterDepth":2218,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0900-zhi-zhen","wiki\u002F2023-10-05-Cplusplus教学\u002F0900-指针","指针","0900",{"path":2260,"stem":2261,"title":2262,"date":2201,"chapterOrder":2263,"chapterDepth":2218,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1000-jie-gou-ti-yu-gong-yong-ti","wiki\u002F2023-10-05-Cplusplus教学\u002F1000-结构体与共用体","结构体与共用体","1000",{"path":2265,"stem":2266,"title":2267,"date":2201,"chapterOrder":2268,"chapterDepth":2218,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1100-nei-cun-fen-qu-yu-sheng-ming-zhou-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1100-内存分区与生命周期","内存分区与生命周期","1100",{"path":2270,"stem":2271,"title":2272,"date":2201,"chapterOrder":2273,"chapterDepth":2218,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1200-yin-yong","wiki\u002F2023-10-05-Cplusplus教学\u002F1200-引用","引用","1200",{"path":2275,"stem":2276,"title":2277,"date":2201,"chapterOrder":2278,"chapterDepth":2218,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1300-han-shu-ti-gao-yu-ming-ming-kong-jian","wiki\u002F2023-10-05-Cplusplus教学\u002F1300-函数提高与命名空间","函数提高与命名空间","1300",{"path":2280,"stem":2281,"title":2282,"date":2201,"chapterOrder":2283,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0100-feng-zhuang","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0100-封装","封装","1400-0100",{"path":2285,"stem":2286,"title":2287,"date":2201,"chapterOrder":2288,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0200-dui-xiang-chu-shi-hua-he-qing-li","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0200-对象初始化和清理","对象初始化和清理","1400-0200",{"path":2290,"stem":2291,"title":2292,"date":2201,"chapterOrder":2293,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0300-dui-xiang-mo-xing-yu-this-zhi-zhen","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0300-对象模型与this指针","对象模型与this指针","1400-0300",{"path":2295,"stem":2296,"title":2297,"date":2201,"chapterOrder":2298,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0400-you-yuan-yu-yun-suan-fu-zhong-zai","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0400-友元与运算符重载","友元与运算符重载","1400-0400",{"path":2300,"stem":2301,"title":2302,"date":2201,"chapterOrder":2303,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0500-ji-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0500-继承","继承","1400-0500",{"path":2305,"stem":2306,"title":2307,"date":2201,"chapterOrder":2308,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0600-duo-tai","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0600-多态","多态","1400-0600",{"path":2310,"stem":2311,"title":2312,"date":2201,"chapterOrder":2313,"chapterDepth":2218,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-lei-he-dui-xiang","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-类和对象","类和对象","1400",{"path":2315,"stem":2316,"title":2317,"date":2201,"chapterOrder":2318,"chapterDepth":2218,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1500-wen-jian-cao-zuo","wiki\u002F2023-10-05-Cplusplus教学\u002F1500-文件操作","文件操作","1500",{"path":2320,"stem":2321,"title":2322,"date":2201,"chapterOrder":2323,"chapterDepth":2218,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1600-yi-chang-chu-li-yu-cuo-wu-ma","wiki\u002F2023-10-05-Cplusplus教学\u002F1600-异常处理与错误码","异常处理","1600",{"path":2325,"stem":2326,"title":2327,"date":2201,"chapterOrder":2328,"chapterDepth":2218,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1700-mu-ban","wiki\u002F2023-10-05-Cplusplus教学\u002F1700-模板","模板","1700",{"path":2330,"stem":2331,"title":2332,"date":2201,"chapterOrder":2333,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0100-stl-chu-shi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0100-STL初识","STL初识","1800-0100",{"path":2335,"stem":2336,"title":2337,"date":2201,"chapterOrder":2338,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0200-std-array","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0200-std-array","std::array","1800-0200",{"path":2340,"stem":2341,"title":2342,"date":2201,"chapterOrder":2343,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0300-string-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0300-string容器","string容器","1800-0300",{"path":2345,"stem":2346,"title":2347,"date":2201,"chapterOrder":2348,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0400-vector-yu-deque-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0400-vector与deque容器","vector与deque容器","1800-0400",{"path":2350,"stem":2351,"title":2352,"date":2201,"chapterOrder":2353,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0500-stack-queue-list-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0500-stack-queue-list容器","stack \u002F queue \u002F list 容器","1800-0500",{"path":2355,"stem":2356,"title":2357,"date":2201,"chapterOrder":2358,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0600-set-map-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0600-set-map容器","set \u002F map 容器","1800-0600",{"path":2360,"stem":2361,"title":2362,"date":2201,"chapterOrder":2363,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0700-han-shu-dui-xiang-yu-wei-ci","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0700-函数对象与谓词","函数对象与谓词","1800-0700",{"path":2365,"stem":2366,"title":2367,"date":2201,"chapterOrder":2368,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0800-chang-yong-suan-fa","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0800-常用算法","常用算法","1800-0800",{"path":2370,"stem":2371,"title":2372,"date":2201,"chapterOrder":2373,"chapterDepth":2218,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-stl-ti-gao-bian-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-STL提高编程","STL提高编程","1800",{"path":2375,"stem":2376,"title":2377,"date":2201,"chapterOrder":2378,"chapterDepth":2218,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1900-c-lei-xing-zhuan-huan","wiki\u002F2023-10-05-Cplusplus教学\u002F1900-C++类型转换","C++类型转换","1900",{"path":2380,"stem":2381,"title":1940,"date":2201,"chapterOrder":2382,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0100-auto","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0100-auto","2000-0100",{"path":2384,"stem":2385,"title":2386,"date":2201,"chapterOrder":2387,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0200-nullptr","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0200-nullptr","nullptr","2000-0200",{"path":2389,"stem":2390,"title":2391,"date":2201,"chapterOrder":2392,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0300-using","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0300-using","using","2000-0300",{"path":2394,"stem":2395,"title":2396,"date":2201,"chapterOrder":2397,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0400-enum-class","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0400-enum-class","enum class","2000-0400",{"path":2208,"stem":2210,"title":5,"date":2201,"chapterOrder":2200,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},{"path":2400,"stem":2401,"title":2402,"date":2201,"chapterOrder":2403,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0600-jie-gou-hua-bang-ding","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0600-结构化绑定","结构化绑定","2000-0600",{"path":2405,"stem":2406,"title":2407,"date":2201,"chapterOrder":2408,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0700-constexpr","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0700-constexpr","constexpr","2000-0700",{"path":2410,"stem":2411,"title":2412,"date":2201,"chapterOrder":2413,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0800-raii","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0800-RAII","RAII","2000-0800",{"path":2415,"stem":2416,"title":2417,"date":2201,"chapterOrder":2418,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0900-zhi-neng-zhi-zhen","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0900-智能指针","智能指针","2000-0900",{"path":2420,"stem":2421,"title":2422,"date":2201,"chapterOrder":2423,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1000-you-zhi-yin-yong-he-yi-dong-yu-yi","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1000-右值引用和移动语义","右值引用和移动语义","2000-1000",{"path":2425,"stem":2426,"title":2427,"date":2201,"chapterOrder":2428,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1100-lambda-biao-da-shi","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1100-Lambda表达式","Lambda 表达式","2000-1100",{"path":2430,"stem":2431,"title":2432,"date":2201,"chapterOrder":2433,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1200-std-function","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1200-std-function","std::function","2000-1200",{"path":2435,"stem":2436,"title":2437,"date":2201,"chapterOrder":2438,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1300-std-bind","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1300-std-bind","std::bind","2000-1300",{"path":2440,"stem":2441,"title":2442,"date":2201,"chapterOrder":2443,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1400-std-optional","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1400-std-optional","std::optional","2000-1400",{"path":2445,"stem":2446,"title":2447,"date":2201,"chapterOrder":2448,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1500-std-variant","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1500-std-variant","std::variant","2000-1500",{"path":2450,"stem":2451,"title":2452,"date":2201,"chapterOrder":2453,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1600-std-span","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1600-std-span","std::span","2000-1600",{"path":2455,"stem":2456,"title":2457,"date":2201,"chapterOrder":2458,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1700-std-format-print","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1700-std-format-print","std::format \u002F std::print","2000-1700",{"path":2460,"stem":2461,"title":2462,"date":2201,"chapterOrder":2463,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1800-std-chrono","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1800-std-chrono","std::chrono","2000-1800",{"path":2465,"stem":2466,"title":2467,"date":2201,"chapterOrder":2468,"chapterDepth":82,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0100-std-thread","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0100-std-thread","std::thread 与 join","2000-1900-0100",{"path":2470,"stem":2471,"title":2472,"date":2201,"chapterOrder":2473,"chapterDepth":82,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0200-mutex-lock-guard","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0200-mutex-lock-guard","mutex 与 lock_guard","2000-1900-0200",{"path":2475,"stem":2476,"title":2477,"date":2201,"chapterOrder":2478,"chapterDepth":82,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0300-std-atomic","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0300-std-atomic","std::atomic","2000-1900-0300",{"path":2480,"stem":2481,"title":2482,"date":2201,"chapterOrder":2483,"chapterDepth":82,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0400-condition-variable","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0400-condition-variable","condition_variable","2000-1900-0400",{"path":2485,"stem":2486,"title":2487,"date":2201,"chapterOrder":2488,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-bing-fa-bian-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-并发编程","并发编程","2000-1900",{"path":2490,"stem":2491,"title":2492,"date":2201,"chapterOrder":2493,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2000-std-filesystem","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-2000-std-filesystem","std::filesystem","2000-2000",{"path":2495,"stem":2496,"title":2497,"date":2201,"chapterOrder":2498,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2100-modules-jian-jie","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-2100-modules简介","modules 简介","2000-2100",{"path":2500,"stem":2501,"title":2502,"date":2201,"chapterOrder":2503,"chapterDepth":2218,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-xian-dai-c","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-现代C++","现代C++","2000",{"path":2505,"stem":2506,"title":2507,"date":2201,"chapterOrder":2508,"chapterDepth":82,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0100-ding-shi-qi-yu-yi-bu-io","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0100-定时器与异步IO","定时器与异步 IO","2100-0100-0100",{"path":2510,"stem":2511,"title":2512,"date":2201,"chapterOrder":2513,"chapterDepth":82,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0200-boost-asio-ji-chu","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0200-Boost.Asio基础","Boost.Asio 基础","2100-0100-0200",{"path":2515,"stem":2516,"title":2517,"date":2201,"chapterOrder":2518,"chapterDepth":82,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0300-chuan-kou-tong-xin","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0300-串口通信","串口通信","2100-0100-0300",{"path":2520,"stem":2521,"title":2522,"date":2201,"chapterOrder":2523,"chapterDepth":82,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0400-tcp-tong-xin","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0400-TCP通信","TCP 通信","2100-0100-0400",{"path":2525,"stem":2526,"title":2527,"date":2201,"chapterOrder":2528,"chapterDepth":82,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0500-udp-tong-xin","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0500-UDP通信","UDP 通信","2100-0100-0500",{"path":2530,"stem":2531,"title":2532,"date":2201,"chapterOrder":2533,"chapterDepth":82,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0600-ji-qi-ren-gong-cheng-xie-fa-yu-ros2-ji-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0600-机器人工程写法与ROS2集成","机器人工程写法与 ROS2 集成","2100-0100-0600",{"path":2535,"stem":2536,"title":2537,"date":2201,"chapterOrder":2538,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-boost-asio-yi-bu-io-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-Boost.Asio异步IO库","Boost.Asio异步IO库","2100-0100",{"path":2540,"stem":2541,"title":2542,"date":2201,"chapterOrder":2543,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0200-eigen-xian-xing-dai-shu-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0200-Eigen线性代数库","Eigen线性代数库","2100-0200",{"path":2545,"stem":2546,"title":2547,"date":2201,"chapterOrder":2548,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0300-opencv-ji-suan-ji-shi-jue-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0300-OpenCV计算机视觉库","OpenCV计算机视觉库","2100-0300",{"path":2550,"stem":2551,"title":2552,"date":2201,"chapterOrder":2553,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0400-pcl-dian-yun-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0400-PCL点云库","PCL点云库","2100-0400",{"path":2555,"stem":2556,"title":2557,"date":2201,"chapterOrder":2558,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0500-sophus-li-qun-li-dai-shu-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0500-Sophus李群李代数库","Sophus 李群李代数库","2100-0500",{"path":2560,"stem":2561,"title":2562,"date":2201,"chapterOrder":2563,"chapterDepth":2218,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-chang-yong-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-常用库","常用库学习","2100",{"path":2565,"stem":2566,"title":2567,"date":2201,"chapterOrder":2568,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0100-cmakepresets-yu-gou-jian-an-zhuang","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0100-CMakePresets与构建安装","CMakePresets与构建安装","2200-0100",{"path":2570,"stem":2571,"title":2572,"date":2201,"chapterOrder":2573,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0200-ding-ceng-cmake-yu-gong-gong-bian-yi-xuan-xiang","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0200-顶层CMake与公共编译选项","顶层CMake与公共编译选项","2200-0200",{"path":2575,"stem":2576,"title":2577,"date":2201,"chapterOrder":2578,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0300-src-yu-lib-mo-kuai-cmake-xiang-jie","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0300-src与lib模块CMake详解","src与lib模块CMake详解","2200-0300",{"path":2580,"stem":2581,"title":2582,"date":2201,"chapterOrder":2583,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0400-di-san-fang-ku-yi-lai-xie-fa","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0400-第三方库依赖写法","第三方库依赖写法","2200-0400",{"path":2585,"stem":2586,"title":2587,"date":2201,"chapterOrder":2588,"chapterDepth":72,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0500-mu-ban-kuo-zhan-yu-chang-jian-wen-ti","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0500-模板扩展与常见问题","模板扩展与常见问题","2200-0500",{"path":2590,"stem":2591,"title":2592,"date":2201,"chapterOrder":2593,"chapterDepth":2218,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":2206},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-cmake-gong-cheng-mu-ban","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-CMake工程模板","CMake工程模板","2200",{"path":2203,"stem":2595,"title":2596,"date":2201,"chapterOrder":2597,"chapterDepth":2218,"docKey":2202,"docRoot":2203,"docTitle":2204,"isWikiDoc":104,"isWikiIndex":104},"wiki\u002F2023-10-05-Cplusplus教学\u002Findex","C\u002FC++教程",null,1784505234216]