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