[{"data":1,"prerenderedAt":3762},["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":3332,"language-switcher-data-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1600-std-span":3746,"wiki-i18n-paths-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1600-std-span":3761},{"id":4,"title":5,"body":6,"canonicalPath":3314,"chapterDepth":94,"chapterOrder":3315,"date":3316,"description":87,"docI18nKey":3317,"docKey":3318,"docRoot":3319,"docTitle":3320,"extension":3321,"i18nKey":3322,"isBlogPost":3323,"isWikiDoc":268,"isWikiIndex":3323,"layout":3324,"legacyPath":3324,"locale":3325,"localeSlug":3326,"meta":3327,"navigation":268,"path":3314,"seo":3328,"sourcePath":3329,"sourceStem":3322,"stem":3330,"wikiDepth":94,"__hash__":3331},"content\u002F_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1600-std-span.md","std::span",{"type":7,"value":8,"toc":3288},"minimark",[9,14,18,43,52,56,70,74,77,81,103,107,392,396,457,468,510,519,523,528,913,919,927,931,1380,1384,1390,1394,1810,1814,1820,1824,1827,1831,1834,1837,1922,1928,1931,1938,1943,2289,2293,2299,2617,2621,2642,2649,2653,2937,2941,2947,2972,2976,2981,3060,3063,3068,3114,3117,3122,3181,3184,3187,3204,3207,3254,3258,3284],[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,461,464,465],{"id":459},"the-difference-between-spanconst-t-and-spant","The difference between ",[29,462,463],{},"span\u003Cconst T>"," and ",[29,466,467],{},"span\u003CT>",[397,469,470,483],{},[400,471,472],{},[403,473,474,477,480],{},[406,475,476],{"align":408},"writing method",[406,478,479],{"align":408},"Yes, it can be modified. Please provide more details.",[406,481,482],{"align":408},"Common uses",[414,484,485,498],{},[403,486,487,492,495],{},[419,488,489],{"align":408},[29,490,491],{},"std::span\u003Cconst T>",[419,493,494],{"align":408},"cannot be modified",[419,496,497],{"align":408},"Read-only processing, statistics, printing, and verification",[403,499,500,504,507],{},[419,501,502],{"align":408},[29,503,60],{},[419,505,506],{"align":408},"can be modified",[419,508,509],{"align":408},"Fill the buffer, normalize the data, in-place filtering",[15,511,512,513,515,516,518],{},"Doesn't own data, so \"whether it's const\" is very important. Function parameters default to prioritizing ",[29,514,491],{},", only writing ",[29,517,60],{}," when you explicitly want to modify the original data.",[10,520,522],{"id":521},"example-code","Example code",[524,525,527],"h3",{"id":526},"example-1-using-span-to-handle-different-container-types","Example 1: Using span to handle different container types",[82,529,531],{"className":84,"code":530,"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,532,533,540,546,553,560,564,569,601,606,639,653,658,677,682,702,707,711,721,726,770,806,853,858,870,881,892,897,908],{"__ignoreMap":87},[91,534,535,537],{"class":93,"line":94},[91,536,98],{"class":97},[91,538,539],{"class":101}," \u003Ciostream>\n",[91,541,542,544],{"class":93,"line":120},[91,543,98],{"class":97},[91,545,102],{"class":101},[91,547,548,550],{"class":93,"line":146},[91,549,98],{"class":97},[91,551,552],{"class":101}," \u003Cvector>\n",[91,554,555,557],{"class":93,"line":184},[91,556,98],{"class":97},[91,558,559],{"class":101}," \u003Carray>\n",[91,561,562],{"class":93,"line":211},[91,563,269],{"emptyLinePlaceholder":268},[91,565,566],{"class":93,"line":238},[91,567,568],{"class":116},"\u002F\u002F 一个函数处理所有类型的连续 int 数据\n",[91,570,571,574,577,579,581,583,585,587,590,593,595,598],{"class":93,"line":265},[91,572,573],{"class":97},"void",[91,575,576],{"class":123}," print_data",[91,578,166],{"class":127},[91,580,124],{"class":123},[91,582,151],{"class":127},[91,584,91],{"class":123},[91,586,131],{"class":127},[91,588,589],{"class":97},"const",[91,591,592],{"class":97}," int",[91,594,160],{"class":127},[91,596,345],{"class":597},"s4XuR",[91,599,600],{"class":127},")\n",[91,602,603],{"class":93,"line":272},[91,604,605],{"class":127},"{\n",[91,607,608,611,614,617,620,623,626,628,631,633,636],{"class":93,"line":278},[91,609,610],{"class":123},"    std",[91,612,613],{"class":127},"::cout ",[91,615,616],{"class":97},"\u003C\u003C",[91,618,619],{"class":101}," \"size = \"",[91,621,622],{"class":97}," \u003C\u003C",[91,624,625],{"class":127}," data.",[91,627,175],{"class":123},[91,629,630],{"class":127},"() ",[91,632,616],{"class":97},[91,634,635],{"class":101}," \": \"",[91,637,638],{"class":127},";\n",[91,640,641,644,647,650],{"class":93,"line":292},[91,642,643],{"class":97},"    for",[91,645,646],{"class":127}," (",[91,648,649],{"class":97},"int",[91,651,652],{"class":127}," n : data)\n",[91,654,655],{"class":93,"line":305},[91,656,657],{"class":127},"    {\n",[91,659,660,663,665,667,670,672,675],{"class":93,"line":314},[91,661,662],{"class":123},"        std",[91,664,613],{"class":127},[91,666,616],{"class":97},[91,668,669],{"class":127}," n ",[91,671,616],{"class":97},[91,673,674],{"class":101}," \" \"",[91,676,638],{"class":127},[91,678,679],{"class":93,"line":327},[91,680,681],{"class":127},"    }\n",[91,683,684,686,688,690,693,697,700],{"class":93,"line":340},[91,685,610],{"class":123},[91,687,613],{"class":127},[91,689,616],{"class":97},[91,691,692],{"class":101}," \"",[91,694,696],{"class":695},"sj4cs","\\n",[91,698,699],{"class":101},"\"",[91,701,638],{"class":127},[91,703,704],{"class":93,"line":353},[91,705,706],{"class":127},"}\n",[91,708,709],{"class":93,"line":367},[91,710,269],{"emptyLinePlaceholder":268},[91,712,713,715,718],{"class":93,"line":381},[91,714,649],{"class":97},[91,716,717],{"class":123}," main",[91,719,720],{"class":127},"()\n",[91,722,724],{"class":93,"line":723},18,[91,725,605],{"class":127},[91,727,729,732,735,738,741,744,746,749,751,754,756,759,761,764,767],{"class":93,"line":728},19,[91,730,731],{"class":97},"    int",[91,733,734],{"class":127}," c_arr[] ",[91,736,737],{"class":97},"=",[91,739,740],{"class":127}," {",[91,742,743],{"class":695},"1",[91,745,172],{"class":127},[91,747,748],{"class":695},"2",[91,750,172],{"class":127},[91,752,753],{"class":695},"3",[91,755,172],{"class":127},[91,757,758],{"class":695},"4",[91,760,172],{"class":127},[91,762,763],{"class":695},"5",[91,765,766],{"class":127},"};",[91,768,769],{"class":116},"              \u002F\u002F C 数组\n",[91,771,773,775,778,781,784,786,788,791,793,796,798,801,803],{"class":93,"line":772},20,[91,774,610],{"class":123},[91,776,777],{"class":127},"::vector",[91,779,780],{"class":97},"\u003Cint>",[91,782,783],{"class":127}," vec ",[91,785,737],{"class":97},[91,787,740],{"class":127},[91,789,790],{"class":695},"10",[91,792,172],{"class":127},[91,794,795],{"class":695},"20",[91,797,172],{"class":127},[91,799,800],{"class":695},"30",[91,802,766],{"class":127},[91,804,805],{"class":116},"         \u002F\u002F vector\n",[91,807,809,811,814,817,819,821,823,826,828,830,833,835,838,840,843,845,848,850],{"class":93,"line":808},21,[91,810,610],{"class":123},[91,812,813],{"class":127},"::array",[91,815,816],{"class":97},"\u003Cint",[91,818,172],{"class":127},[91,820,758],{"class":695},[91,822,137],{"class":97},[91,824,825],{"class":127}," arr ",[91,827,737],{"class":97},[91,829,740],{"class":127},[91,831,832],{"class":695},"100",[91,834,172],{"class":127},[91,836,837],{"class":695},"200",[91,839,172],{"class":127},[91,841,842],{"class":695},"300",[91,844,172],{"class":127},[91,846,847],{"class":695},"400",[91,849,766],{"class":127},[91,851,852],{"class":116},"  \u002F\u002F std::array\n",[91,854,856],{"class":93,"line":855},22,[91,857,269],{"emptyLinePlaceholder":268},[91,859,861,864,867],{"class":93,"line":860},23,[91,862,863],{"class":123},"    print_data",[91,865,866],{"class":127},"(c_arr);",[91,868,869],{"class":116},"   \u002F\u002F ✅ C 数组\n",[91,871,873,875,878],{"class":93,"line":872},24,[91,874,863],{"class":123},[91,876,877],{"class":127},"(vec);",[91,879,880],{"class":116},"      \u002F\u002F ✅ vector\n",[91,882,884,886,889],{"class":93,"line":883},25,[91,885,863],{"class":123},[91,887,888],{"class":127},"(arr);",[91,890,891],{"class":116},"      \u002F\u002F ✅ std::array\n",[91,893,895],{"class":93,"line":894},26,[91,896,269],{"emptyLinePlaceholder":268},[91,898,900,903,906],{"class":93,"line":899},27,[91,901,902],{"class":97},"    return",[91,904,905],{"class":695}," 0",[91,907,638],{"class":127},[91,909,911],{"class":93,"line":910},28,[91,912,706],{"class":127},[15,914,915,918],{},[25,916,917],{},"Results","：",[82,920,925],{"className":921,"code":923,"language":924},[922],"language-text","size = 5: 1 2 3 4 5 \nsize = 3: 10 20 30 \nsize = 4: 100 200 300 400 \n","text",[29,926,923],{"__ignoreMap":87},[524,928,930],{"id":929},"example-2-based-on-example-1-subviews-subspan-of-span","Example 2: Based on Example 1, subviews (subspan) of span",[82,932,934],{"className":84,"code":933,"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,935,936,942,948,954,958,966,970,1012,1016,1030,1034,1039,1065,1078,1103,1119,1123,1128,1147,1160,1185,1201,1205,1210,1229,1242,1267,1283,1287,1293,1312,1330,1361,1366,1375],{"__ignoreMap":87},[91,937,938,940],{"class":93,"line":94},[91,939,98],{"class":97},[91,941,539],{"class":101},[91,943,944,946],{"class":93,"line":120},[91,945,98],{"class":97},[91,947,102],{"class":101},[91,949,950,952],{"class":93,"line":146},[91,951,98],{"class":97},[91,953,552],{"class":101},[91,955,956],{"class":93,"line":184},[91,957,269],{"emptyLinePlaceholder":268},[91,959,960,962,964],{"class":93,"line":211},[91,961,649],{"class":97},[91,963,717],{"class":123},[91,965,720],{"class":127},[91,967,968],{"class":93,"line":238},[91,969,605],{"class":127},[91,971,972,974,976,978,980,982,984,986,988,990,992,994,996,999,1001,1004,1006,1009],{"class":93,"line":265},[91,973,610],{"class":123},[91,975,777],{"class":127},[91,977,780],{"class":97},[91,979,783],{"class":127},[91,981,737],{"class":97},[91,983,740],{"class":127},[91,985,790],{"class":695},[91,987,172],{"class":127},[91,989,795],{"class":695},[91,991,172],{"class":127},[91,993,800],{"class":695},[91,995,172],{"class":127},[91,997,998],{"class":695},"40",[91,1000,172],{"class":127},[91,1002,1003],{"class":695},"50",[91,1005,172],{"class":127},[91,1007,1008],{"class":695},"60",[91,1010,1011],{"class":127},"};\n",[91,1013,1014],{"class":93,"line":272},[91,1015,269],{"emptyLinePlaceholder":268},[91,1017,1018,1020,1022,1024,1027],{"class":93,"line":278},[91,1019,610],{"class":123},[91,1021,128],{"class":127},[91,1023,780],{"class":97},[91,1025,1026],{"class":123}," sp",[91,1028,1029],{"class":127},"(vec);\n",[91,1031,1032],{"class":93,"line":292},[91,1033,269],{"emptyLinePlaceholder":268},[91,1035,1036],{"class":93,"line":305},[91,1037,1038],{"class":116},"    \u002F\u002F 取中间 3 个元素（从索引 1 开始，取 3 个）\n",[91,1040,1041,1044,1047,1049,1052,1054,1056,1058,1060,1062],{"class":93,"line":314},[91,1042,1043],{"class":97},"    auto",[91,1045,1046],{"class":127}," mid ",[91,1048,737],{"class":97},[91,1050,1051],{"class":127}," sp.",[91,1053,358],{"class":123},[91,1055,166],{"class":127},[91,1057,743],{"class":695},[91,1059,172],{"class":127},[91,1061,753],{"class":695},[91,1063,1064],{"class":127},");\n",[91,1066,1067,1069,1071,1073,1076],{"class":93,"line":327},[91,1068,610],{"class":123},[91,1070,613],{"class":127},[91,1072,616],{"class":97},[91,1074,1075],{"class":101}," \"mid: \"",[91,1077,638],{"class":127},[91,1079,1080,1082,1084,1086,1089,1091,1093,1095,1097,1099,1101],{"class":93,"line":340},[91,1081,643],{"class":97},[91,1083,646],{"class":127},[91,1085,649],{"class":97},[91,1087,1088],{"class":127}," n : mid) ",[91,1090,124],{"class":123},[91,1092,613],{"class":127},[91,1094,616],{"class":97},[91,1096,669],{"class":127},[91,1098,616],{"class":97},[91,1100,674],{"class":101},[91,1102,638],{"class":127},[91,1104,1105,1107,1109,1111,1113,1115,1117],{"class":93,"line":353},[91,1106,610],{"class":123},[91,1108,613],{"class":127},[91,1110,616],{"class":97},[91,1112,692],{"class":101},[91,1114,696],{"class":695},[91,1116,699],{"class":101},[91,1118,638],{"class":127},[91,1120,1121],{"class":93,"line":367},[91,1122,269],{"emptyLinePlaceholder":268},[91,1124,1125],{"class":93,"line":381},[91,1126,1127],{"class":116},"    \u002F\u002F 取前 2 个\n",[91,1129,1130,1132,1135,1137,1139,1141,1143,1145],{"class":93,"line":723},[91,1131,1043],{"class":97},[91,1133,1134],{"class":127}," first2 ",[91,1136,737],{"class":97},[91,1138,1051],{"class":127},[91,1140,372],{"class":123},[91,1142,166],{"class":127},[91,1144,748],{"class":695},[91,1146,1064],{"class":127},[91,1148,1149,1151,1153,1155,1158],{"class":93,"line":728},[91,1150,610],{"class":123},[91,1152,613],{"class":127},[91,1154,616],{"class":97},[91,1156,1157],{"class":101}," \"first 2: \"",[91,1159,638],{"class":127},[91,1161,1162,1164,1166,1168,1171,1173,1175,1177,1179,1181,1183],{"class":93,"line":772},[91,1163,643],{"class":97},[91,1165,646],{"class":127},[91,1167,649],{"class":97},[91,1169,1170],{"class":127}," n : first2) ",[91,1172,124],{"class":123},[91,1174,613],{"class":127},[91,1176,616],{"class":97},[91,1178,669],{"class":127},[91,1180,616],{"class":97},[91,1182,674],{"class":101},[91,1184,638],{"class":127},[91,1186,1187,1189,1191,1193,1195,1197,1199],{"class":93,"line":808},[91,1188,610],{"class":123},[91,1190,613],{"class":127},[91,1192,616],{"class":97},[91,1194,692],{"class":101},[91,1196,696],{"class":695},[91,1198,699],{"class":101},[91,1200,638],{"class":127},[91,1202,1203],{"class":93,"line":855},[91,1204,269],{"emptyLinePlaceholder":268},[91,1206,1207],{"class":93,"line":860},[91,1208,1209],{"class":116},"    \u002F\u002F 取后 3 个\n",[91,1211,1212,1214,1217,1219,1221,1223,1225,1227],{"class":93,"line":872},[91,1213,1043],{"class":97},[91,1215,1216],{"class":127}," last3 ",[91,1218,737],{"class":97},[91,1220,1051],{"class":127},[91,1222,386],{"class":123},[91,1224,166],{"class":127},[91,1226,753],{"class":695},[91,1228,1064],{"class":127},[91,1230,1231,1233,1235,1237,1240],{"class":93,"line":883},[91,1232,610],{"class":123},[91,1234,613],{"class":127},[91,1236,616],{"class":97},[91,1238,1239],{"class":101}," \"last 3: \"",[91,1241,638],{"class":127},[91,1243,1244,1246,1248,1250,1253,1255,1257,1259,1261,1263,1265],{"class":93,"line":894},[91,1245,643],{"class":97},[91,1247,646],{"class":127},[91,1249,649],{"class":97},[91,1251,1252],{"class":127}," n : last3) ",[91,1254,124],{"class":123},[91,1256,613],{"class":127},[91,1258,616],{"class":97},[91,1260,669],{"class":127},[91,1262,616],{"class":97},[91,1264,674],{"class":101},[91,1266,638],{"class":127},[91,1268,1269,1271,1273,1275,1277,1279,1281],{"class":93,"line":899},[91,1270,610],{"class":123},[91,1272,613],{"class":127},[91,1274,616],{"class":97},[91,1276,692],{"class":101},[91,1278,696],{"class":695},[91,1280,699],{"class":101},[91,1282,638],{"class":127},[91,1284,1285],{"class":93,"line":910},[91,1286,269],{"emptyLinePlaceholder":268},[91,1288,1290],{"class":93,"line":1289},29,[91,1291,1292],{"class":116},"    \u002F\u002F 子视图修改会影响原数据！\n",[91,1294,1296,1299,1302,1305,1307,1310],{"class":93,"line":1295},30,[91,1297,1298],{"class":127},"    mid[",[91,1300,1301],{"class":695},"0",[91,1303,1304],{"class":127},"] ",[91,1306,737],{"class":97},[91,1308,1309],{"class":695}," 999",[91,1311,638],{"class":127},[91,1313,1315,1317,1319,1321,1324,1326,1328],{"class":93,"line":1314},31,[91,1316,610],{"class":123},[91,1318,613],{"class":127},[91,1320,616],{"class":97},[91,1322,1323],{"class":101}," \"after modifying mid[0] = 999",[91,1325,696],{"class":695},[91,1327,699],{"class":101},[91,1329,638],{"class":127},[91,1331,1333,1335,1337,1339,1342,1344,1347,1349,1351,1353,1355,1357,1359],{"class":93,"line":1332},32,[91,1334,610],{"class":123},[91,1336,613],{"class":127},[91,1338,616],{"class":97},[91,1340,1341],{"class":101}," \"original vec[1] = \"",[91,1343,622],{"class":97},[91,1345,1346],{"class":127}," vec[",[91,1348,743],{"class":695},[91,1350,1304],{"class":127},[91,1352,616],{"class":97},[91,1354,692],{"class":101},[91,1356,696],{"class":695},[91,1358,699],{"class":101},[91,1360,638],{"class":127},[91,1362,1364],{"class":93,"line":1363},33,[91,1365,269],{"emptyLinePlaceholder":268},[91,1367,1369,1371,1373],{"class":93,"line":1368},34,[91,1370,902],{"class":97},[91,1372,905],{"class":695},[91,1374,638],{"class":127},[91,1376,1378],{"class":93,"line":1377},35,[91,1379,706],{"class":127},[15,1381,1382,918],{},[25,1383,917],{},[82,1385,1388],{"className":1386,"code":1387,"language":924},[922],"mid: 20 30 40 \nfirst 2: 10 20 \nlast 3: 40 50 60 \nafter modifying mid[0] = 999\noriginal vec[1] = 999\n",[29,1389,1387],{"__ignoreMap":87},[524,1391,1393],{"id":1392},"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,1395,1397],{"className":84,"code":1396,"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,1398,1399,1405,1411,1417,1421,1426,1455,1459,1474,1485,1489,1500,1504,1511,1515,1519,1524,1551,1555,1575,1594,1598,1602,1610,1614,1655,1680,1684,1712,1739,1767,1794,1798,1806],{"__ignoreMap":87},[91,1400,1401,1403],{"class":93,"line":94},[91,1402,98],{"class":97},[91,1404,539],{"class":101},[91,1406,1407,1409],{"class":93,"line":120},[91,1408,98],{"class":97},[91,1410,102],{"class":101},[91,1412,1413,1415],{"class":93,"line":146},[91,1414,98],{"class":97},[91,1416,552],{"class":101},[91,1418,1419],{"class":93,"line":184},[91,1420,269],{"emptyLinePlaceholder":268},[91,1422,1423],{"class":93,"line":211},[91,1424,1425],{"class":116},"\u002F\u002F 计算 span 中所有元素的和\n",[91,1427,1428,1431,1434,1436,1438,1440,1442,1444,1446,1449,1451,1453],{"class":93,"line":238},[91,1429,1430],{"class":97},"double",[91,1432,1433],{"class":123}," sum",[91,1435,166],{"class":127},[91,1437,124],{"class":123},[91,1439,151],{"class":127},[91,1441,91],{"class":123},[91,1443,131],{"class":127},[91,1445,589],{"class":97},[91,1447,1448],{"class":97}," double",[91,1450,160],{"class":127},[91,1452,345],{"class":597},[91,1454,600],{"class":127},[91,1456,1457],{"class":93,"line":265},[91,1458,605],{"class":127},[91,1460,1461,1464,1467,1469,1472],{"class":93,"line":272},[91,1462,1463],{"class":97},"    double",[91,1465,1466],{"class":127}," total ",[91,1468,737],{"class":97},[91,1470,1471],{"class":695}," 0.0",[91,1473,638],{"class":127},[91,1475,1476,1478,1480,1482],{"class":93,"line":278},[91,1477,643],{"class":97},[91,1479,646],{"class":127},[91,1481,1430],{"class":97},[91,1483,1484],{"class":127}," x : data)\n",[91,1486,1487],{"class":93,"line":292},[91,1488,657],{"class":127},[91,1490,1491,1494,1497],{"class":93,"line":305},[91,1492,1493],{"class":127},"        total ",[91,1495,1496],{"class":97},"+=",[91,1498,1499],{"class":127}," x;\n",[91,1501,1502],{"class":93,"line":314},[91,1503,681],{"class":127},[91,1505,1506,1508],{"class":93,"line":327},[91,1507,902],{"class":97},[91,1509,1510],{"class":127}," total;\n",[91,1512,1513],{"class":93,"line":340},[91,1514,706],{"class":127},[91,1516,1517],{"class":93,"line":353},[91,1518,269],{"emptyLinePlaceholder":268},[91,1520,1521],{"class":93,"line":367},[91,1522,1523],{"class":116},"\u002F\u002F 计算 span 中所有元素的平均值\n",[91,1525,1526,1528,1531,1533,1535,1537,1539,1541,1543,1545,1547,1549],{"class":93,"line":381},[91,1527,1430],{"class":97},[91,1529,1530],{"class":123}," average",[91,1532,166],{"class":127},[91,1534,124],{"class":123},[91,1536,151],{"class":127},[91,1538,91],{"class":123},[91,1540,131],{"class":127},[91,1542,589],{"class":97},[91,1544,1448],{"class":97},[91,1546,160],{"class":127},[91,1548,345],{"class":597},[91,1550,600],{"class":127},[91,1552,1553],{"class":93,"line":723},[91,1554,605],{"class":127},[91,1556,1557,1560,1563,1565,1568,1571,1573],{"class":93,"line":728},[91,1558,1559],{"class":97},"    if",[91,1561,1562],{"class":127}," (data.",[91,1564,297],{"class":123},[91,1566,1567],{"class":127},"()) ",[91,1569,1570],{"class":97},"return",[91,1572,1471],{"class":695},[91,1574,638],{"class":127},[91,1576,1577,1579,1581,1584,1587,1589,1591],{"class":93,"line":772},[91,1578,902],{"class":97},[91,1580,1433],{"class":123},[91,1582,1583],{"class":127},"(data) ",[91,1585,1586],{"class":97},"\u002F",[91,1588,625],{"class":127},[91,1590,175],{"class":123},[91,1592,1593],{"class":127},"();\n",[91,1595,1596],{"class":93,"line":808},[91,1597,706],{"class":127},[91,1599,1600],{"class":93,"line":855},[91,1601,269],{"emptyLinePlaceholder":268},[91,1603,1604,1606,1608],{"class":93,"line":860},[91,1605,649],{"class":97},[91,1607,717],{"class":123},[91,1609,720],{"class":127},[91,1611,1612],{"class":93,"line":872},[91,1613,605],{"class":127},[91,1615,1616,1618,1620,1623,1626,1628,1630,1633,1635,1638,1640,1643,1645,1648,1650,1653],{"class":93,"line":883},[91,1617,610],{"class":123},[91,1619,777],{"class":127},[91,1621,1622],{"class":97},"\u003Cdouble>",[91,1624,1625],{"class":127}," scores ",[91,1627,737],{"class":97},[91,1629,740],{"class":127},[91,1631,1632],{"class":695},"85.5",[91,1634,172],{"class":127},[91,1636,1637],{"class":695},"92.0",[91,1639,172],{"class":127},[91,1641,1642],{"class":695},"78.5",[91,1644,172],{"class":127},[91,1646,1647],{"class":695},"90.0",[91,1649,172],{"class":127},[91,1651,1652],{"class":695},"88.0",[91,1654,1011],{"class":127},[91,1656,1657,1659,1661,1663,1665,1668,1670,1673,1675,1678],{"class":93,"line":894},[91,1658,1463],{"class":97},[91,1660,734],{"class":127},[91,1662,737],{"class":97},[91,1664,740],{"class":127},[91,1666,1667],{"class":695},"1.1",[91,1669,172],{"class":127},[91,1671,1672],{"class":695},"2.2",[91,1674,172],{"class":127},[91,1676,1677],{"class":695},"3.3",[91,1679,1011],{"class":127},[91,1681,1682],{"class":93,"line":899},[91,1683,269],{"emptyLinePlaceholder":268},[91,1685,1686,1688,1690,1692,1695,1697,1699,1702,1704,1706,1708,1710],{"class":93,"line":910},[91,1687,610],{"class":123},[91,1689,613],{"class":127},[91,1691,616],{"class":97},[91,1693,1694],{"class":101}," \"sum(scores) = \"",[91,1696,622],{"class":97},[91,1698,1433],{"class":123},[91,1700,1701],{"class":127},"(scores) ",[91,1703,616],{"class":97},[91,1705,692],{"class":101},[91,1707,696],{"class":695},[91,1709,699],{"class":101},[91,1711,638],{"class":127},[91,1713,1714,1716,1718,1720,1723,1725,1727,1729,1731,1733,1735,1737],{"class":93,"line":1289},[91,1715,610],{"class":123},[91,1717,613],{"class":127},[91,1719,616],{"class":97},[91,1721,1722],{"class":101}," \"avg(scores) = \"",[91,1724,622],{"class":97},[91,1726,1530],{"class":123},[91,1728,1701],{"class":127},[91,1730,616],{"class":97},[91,1732,692],{"class":101},[91,1734,696],{"class":695},[91,1736,699],{"class":101},[91,1738,638],{"class":127},[91,1740,1741,1743,1745,1747,1750,1752,1754,1757,1759,1761,1763,1765],{"class":93,"line":1295},[91,1742,610],{"class":123},[91,1744,613],{"class":127},[91,1746,616],{"class":97},[91,1748,1749],{"class":101}," \"sum(c_arr) = \"",[91,1751,622],{"class":97},[91,1753,1433],{"class":123},[91,1755,1756],{"class":127},"(c_arr) ",[91,1758,616],{"class":97},[91,1760,692],{"class":101},[91,1762,696],{"class":695},[91,1764,699],{"class":101},[91,1766,638],{"class":127},[91,1768,1769,1771,1773,1775,1778,1780,1782,1784,1786,1788,1790,1792],{"class":93,"line":1314},[91,1770,610],{"class":123},[91,1772,613],{"class":127},[91,1774,616],{"class":97},[91,1776,1777],{"class":101}," \"avg(c_arr) = \"",[91,1779,622],{"class":97},[91,1781,1530],{"class":123},[91,1783,1756],{"class":127},[91,1785,616],{"class":97},[91,1787,692],{"class":101},[91,1789,696],{"class":695},[91,1791,699],{"class":101},[91,1793,638],{"class":127},[91,1795,1796],{"class":93,"line":1332},[91,1797,269],{"emptyLinePlaceholder":268},[91,1799,1800,1802,1804],{"class":93,"line":1363},[91,1801,902],{"class":97},[91,1803,905],{"class":695},[91,1805,638],{"class":127},[91,1807,1808],{"class":93,"line":1368},[91,1809,706],{"class":127},[15,1811,1812,918],{},[25,1813,917],{},[82,1815,1818],{"className":1816,"code":1817,"language":924},[922],"sum(scores) = 434\navg(scores) = 86.8\nsum(c_arr) = 6.6\navg(c_arr) = 2.2\n",[29,1819,1817],{"__ignoreMap":87},[10,1821,1823],{"id":1822},"runtime-results","runtime results",[15,1825,1826],{},"See the \"running results\" for each example above.",[10,1828,1830],{"id":1829},"key-syntax-explanation-in-the-example","Key syntax explanation in the example",[15,1832,1833],{},"|Here is the translation of the provided Simplified Chinese Markdown fragment into natural American English, following all specified rules.",[1835,1836],"hr",{},[397,1838,1839,1860],{},[400,1840,1841],{},[403,1842,1843,1848,1851,1854,1857],{},[406,1844,1845],{"align":408},[25,1846,1847],{},"Example",[406,1849,1850],{"align":408},"Discusses what",[406,1852,1853],{"align":408},"Newly emerged syntax",[406,1855,1856],{"align":408},"Why write it this way",[406,1858,1859],{"align":408},"Precautions",[414,1861,1862,1882,1908],{},[403,1863,1864,1867,1870,1876,1879],{},[419,1865,1866],{"align":408},"Example 1",[419,1868,1869],{"align":408},"Unified reception of different containers.",[419,1871,1872,1875],{"align":408},[29,1873,1874],{},"std::span\u003Cconst int>"," as a parameter",[419,1877,1878],{"align":408},"A function that processes vector\u002Farray\u002FC array.",[419,1880,1881],{"align":408},"A span is just a view and does not own data.",[403,1883,1884,1887,1890,1902,1905],{},[419,1885,1886],{"align":408},"Example 2",[419,1888,1889],{"align":408},"Subview Operations",[419,1891,1892,1895,1896,1895,1899],{"align":408},[29,1893,1894],{},"subspan()","、",[29,1897,1898],{},"first()",[29,1900,1901],{},"last()",[419,1903,1904],{"align":408},"Zero-copy slicing for processing large arrays locally.",[419,1906,1907],{"align":408},"Subview modification affects original data",[403,1909,1910,1913,1916,1918,1920],{},[419,1911,1912],{"align":408},"Example 3",[419,1914,1915],{"align":408},"Write generic functions using span.",[419,1917],{"align":408},[419,1919],{"align":408},[419,1921],{"align":408},[15,1923,1924,1925,1927],{},"The term \"span\" typically refers to a non-owning view over a contiguous sequence of objects, commonly used in languages like C++ (",[29,1926,5],{},") or as a concept in other contexts (like slicing in JavaScript).",[15,1929,1930],{},"Here are examples of how you might write a generic function using the span concept:",[524,1932,1934,1935,1937],{"id":1933},"_1-in-c-using-stdspan","1. In C++ (using ",[29,1936,5],{},")",[15,1939,1940,1942],{},[29,1941,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,1944,1946],{"className":84,"code":1945,"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,1947,1948,1954,1960,1966,1970,1975,1992,2019,2029,2043,2052,2056,2062,2066,2070,2079,2114,2137,2141,2146,2176,2204,2208,2213,2273,2277,2285],{"__ignoreMap":87},[91,1949,1950,1952],{"class":93,"line":94},[91,1951,98],{"class":97},[91,1953,102],{"class":101},[91,1955,1956,1958],{"class":93,"line":120},[91,1957,98],{"class":97},[91,1959,539],{"class":101},[91,1961,1962,1964],{"class":93,"line":146},[91,1963,98],{"class":97},[91,1965,552],{"class":101},[91,1967,1968],{"class":93,"line":184},[91,1969,269],{"emptyLinePlaceholder":268},[91,1971,1972],{"class":93,"line":211},[91,1973,1974],{"class":116},"\u002F\u002F A generic function that calculates the sum of elements in any contiguous sequence\n",[91,1976,1977,1980,1983,1986,1989],{"class":93,"line":238},[91,1978,1979],{"class":97},"template",[91,1981,1982],{"class":127}," \u003C",[91,1984,1985],{"class":97},"typename",[91,1987,1988],{"class":123}," T",[91,1990,1991],{"class":127},">\n",[91,1993,1994,1996,1998,2000,2002,2004,2006,2008,2010,2012,2014,2016],{"class":93,"line":265},[91,1995,134],{"class":123},[91,1997,1433],{"class":123},[91,1999,166],{"class":127},[91,2001,124],{"class":123},[91,2003,151],{"class":127},[91,2005,91],{"class":123},[91,2007,131],{"class":127},[91,2009,589],{"class":97},[91,2011,1988],{"class":123},[91,2013,160],{"class":127},[91,2015,345],{"class":597},[91,2017,2018],{"class":127},") {\n",[91,2020,2021,2024,2026],{"class":93,"line":272},[91,2022,2023],{"class":127},"    T total ",[91,2025,737],{"class":97},[91,2027,2028],{"class":127}," T{};\n",[91,2030,2031,2033,2035,2037,2040],{"class":93,"line":278},[91,2032,643],{"class":97},[91,2034,646],{"class":127},[91,2036,589],{"class":97},[91,2038,2039],{"class":97}," auto&",[91,2041,2042],{"class":127}," value : data) {\n",[91,2044,2045,2047,2049],{"class":93,"line":292},[91,2046,1493],{"class":127},[91,2048,1496],{"class":97},[91,2050,2051],{"class":127}," value;\n",[91,2053,2054],{"class":93,"line":305},[91,2055,681],{"class":127},[91,2057,2058,2060],{"class":93,"line":314},[91,2059,902],{"class":97},[91,2061,1510],{"class":127},[91,2063,2064],{"class":93,"line":327},[91,2065,706],{"class":127},[91,2067,2068],{"class":93,"line":340},[91,2069,269],{"emptyLinePlaceholder":268},[91,2071,2072,2074,2076],{"class":93,"line":353},[91,2073,649],{"class":97},[91,2075,717],{"class":123},[91,2077,2078],{"class":127},"() {\n",[91,2080,2081,2083,2085,2087,2090,2092,2094,2096,2098,2100,2102,2104,2106,2108,2110,2112],{"class":93,"line":367},[91,2082,610],{"class":123},[91,2084,777],{"class":127},[91,2086,780],{"class":97},[91,2088,2089],{"class":127}," numbers ",[91,2091,737],{"class":97},[91,2093,740],{"class":127},[91,2095,743],{"class":695},[91,2097,172],{"class":127},[91,2099,748],{"class":695},[91,2101,172],{"class":127},[91,2103,753],{"class":695},[91,2105,172],{"class":127},[91,2107,758],{"class":695},[91,2109,172],{"class":127},[91,2111,763],{"class":695},[91,2113,1011],{"class":127},[91,2115,2116,2118,2121,2123,2125,2127,2129,2131,2133,2135],{"class":93,"line":381},[91,2117,731],{"class":97},[91,2119,2120],{"class":127}," arr[] ",[91,2122,737],{"class":97},[91,2124,740],{"class":127},[91,2126,790],{"class":695},[91,2128,172],{"class":127},[91,2130,795],{"class":695},[91,2132,172],{"class":127},[91,2134,800],{"class":695},[91,2136,1011],{"class":127},[91,2138,2139],{"class":93,"line":723},[91,2140,269],{"emptyLinePlaceholder":268},[91,2142,2143],{"class":93,"line":728},[91,2144,2145],{"class":116},"    \u002F\u002F The same function works with different containers\n",[91,2147,2148,2150,2152,2154,2157,2159,2161,2163,2165,2168,2170,2173],{"class":93,"line":772},[91,2149,610],{"class":123},[91,2151,613],{"class":127},[91,2153,616],{"class":97},[91,2155,2156],{"class":101}," \"Vector sum: \"",[91,2158,622],{"class":97},[91,2160,1433],{"class":123},[91,2162,131],{"class":127},[91,2164,649],{"class":97},[91,2166,2167],{"class":127},">(numbers) ",[91,2169,616],{"class":97},[91,2171,2172],{"class":123}," std",[91,2174,2175],{"class":127},"::endl;\n",[91,2177,2178,2180,2182,2184,2187,2189,2191,2193,2195,2198,2200,2202],{"class":93,"line":808},[91,2179,610],{"class":123},[91,2181,613],{"class":127},[91,2183,616],{"class":97},[91,2185,2186],{"class":101}," \"Array sum: \"",[91,2188,622],{"class":97},[91,2190,1433],{"class":123},[91,2192,131],{"class":127},[91,2194,649],{"class":97},[91,2196,2197],{"class":127},">(arr) ",[91,2199,616],{"class":97},[91,2201,2172],{"class":123},[91,2203,2175],{"class":127},[91,2205,2206],{"class":93,"line":855},[91,2207,269],{"emptyLinePlaceholder":268},[91,2209,2210],{"class":93,"line":860},[91,2211,2212],{"class":116},"    \u002F\u002F You can also use a sub-span (a slice)\n",[91,2214,2215,2217,2219,2221,2224,2226,2228,2230,2232,2235,2237,2239,2241,2243,2245,2247,2250,2252,2254,2256,2258,2260,2263,2265,2267,2270],{"class":93,"line":872},[91,2216,610],{"class":123},[91,2218,613],{"class":127},[91,2220,616],{"class":97},[91,2222,2223],{"class":101}," \"Partial vector sum: \"",[91,2225,622],{"class":97},[91,2227,1433],{"class":123},[91,2229,131],{"class":127},[91,2231,649],{"class":97},[91,2233,2234],{"class":127},">(",[91,2236,124],{"class":123},[91,2238,151],{"class":127},[91,2240,91],{"class":123},[91,2242,131],{"class":127},[91,2244,589],{"class":97},[91,2246,592],{"class":97},[91,2248,2249],{"class":127},">(numbers).",[91,2251,358],{"class":123},[91,2253,166],{"class":127},[91,2255,743],{"class":695},[91,2257,172],{"class":127},[91,2259,753],{"class":695},[91,2261,2262],{"class":127},")) ",[91,2264,616],{"class":97},[91,2266,2172],{"class":123},[91,2268,2269],{"class":127},"::endl;",[91,2271,2272],{"class":116}," \u002F\u002F sums elements at index 1, 2, 3\n",[91,2274,2275],{"class":93,"line":883},[91,2276,269],{"emptyLinePlaceholder":268},[91,2278,2279,2281,2283],{"class":93,"line":894},[91,2280,902],{"class":97},[91,2282,905],{"class":695},[91,2284,638],{"class":127},[91,2286,2287],{"class":93,"line":899},[91,2288,706],{"class":127},[524,2290,2292],{"id":2291},"_2-in-javascript-using-array-slicing-or-typed-arrays","2. In JavaScript (using array slicing or typed arrays)",[15,2294,2295,2296,2298],{},"JavaScript doesn't have a direct ",[29,2297,91],{}," type, but you can create a generic function that operates on \"array-like\" objects or uses slicing to mimic span behavior.",[82,2300,2304],{"className":2301,"code":2302,"language":2303,"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,2305,2306,2311,2325,2338,2355,2363,2367,2373,2377,2381,2386,2422,2434,2461,2470,2474,2480,2484,2488,2521,2552,2556,2575,2591],{"__ignoreMap":87},[91,2307,2308],{"class":93,"line":94},[91,2309,2310],{"class":116},"\u002F\u002F A generic function that works on any iterable (Array, TypedArray, etc.)\n",[91,2312,2313,2316,2318,2320,2323],{"class":93,"line":120},[91,2314,2315],{"class":97},"function",[91,2317,1433],{"class":123},[91,2319,166],{"class":127},[91,2321,2322],{"class":597},"iterable",[91,2324,2018],{"class":127},[91,2326,2327,2330,2332,2334,2336],{"class":93,"line":146},[91,2328,2329],{"class":97},"    let",[91,2331,1466],{"class":127},[91,2333,737],{"class":97},[91,2335,905],{"class":695},[91,2337,638],{"class":127},[91,2339,2340,2342,2344,2346,2349,2352],{"class":93,"line":184},[91,2341,643],{"class":97},[91,2343,646],{"class":127},[91,2345,589],{"class":97},[91,2347,2348],{"class":695}," value",[91,2350,2351],{"class":97}," of",[91,2353,2354],{"class":127}," iterable) {\n",[91,2356,2357,2359,2361],{"class":93,"line":211},[91,2358,1493],{"class":127},[91,2360,1496],{"class":97},[91,2362,2051],{"class":127},[91,2364,2365],{"class":93,"line":238},[91,2366,681],{"class":127},[91,2368,2369,2371],{"class":93,"line":265},[91,2370,902],{"class":97},[91,2372,1510],{"class":127},[91,2374,2375],{"class":93,"line":272},[91,2376,706],{"class":127},[91,2378,2379],{"class":93,"line":278},[91,2380,269],{"emptyLinePlaceholder":268},[91,2382,2383],{"class":93,"line":292},[91,2384,2385],{"class":116},"\u002F\u002F Or a function that explicitly takes an array and optional start\u002Fend indices (like a span)\n",[91,2387,2388,2390,2393,2395,2397,2399,2402,2405,2407,2409,2412,2414,2417,2420],{"class":93,"line":305},[91,2389,2315],{"class":97},[91,2391,2392],{"class":123}," sumRange",[91,2394,166],{"class":127},[91,2396,230],{"class":597},[91,2398,172],{"class":127},[91,2400,2401],{"class":597},"start",[91,2403,2404],{"class":97}," =",[91,2406,905],{"class":695},[91,2408,172],{"class":127},[91,2410,2411],{"class":597},"end",[91,2413,2404],{"class":97},[91,2415,2416],{"class":127}," array.",[91,2418,2419],{"class":695},"length",[91,2421,2018],{"class":127},[91,2423,2424,2426,2428,2430,2432],{"class":93,"line":314},[91,2425,2329],{"class":97},[91,2427,1466],{"class":127},[91,2429,737],{"class":97},[91,2431,905],{"class":695},[91,2433,638],{"class":127},[91,2435,2436,2438,2440,2443,2446,2448,2451,2453,2456,2459],{"class":93,"line":327},[91,2437,643],{"class":97},[91,2439,646],{"class":127},[91,2441,2442],{"class":97},"let",[91,2444,2445],{"class":127}," i ",[91,2447,737],{"class":97},[91,2449,2450],{"class":127}," start; i ",[91,2452,131],{"class":97},[91,2454,2455],{"class":127}," end; i",[91,2457,2458],{"class":97},"++",[91,2460,2018],{"class":127},[91,2462,2463,2465,2467],{"class":93,"line":340},[91,2464,1493],{"class":127},[91,2466,1496],{"class":97},[91,2468,2469],{"class":127}," array[i];\n",[91,2471,2472],{"class":93,"line":353},[91,2473,681],{"class":127},[91,2475,2476,2478],{"class":93,"line":367},[91,2477,902],{"class":97},[91,2479,1510],{"class":127},[91,2481,2482],{"class":93,"line":381},[91,2483,706],{"class":127},[91,2485,2486],{"class":93,"line":723},[91,2487,269],{"emptyLinePlaceholder":268},[91,2489,2490,2492,2495,2497,2500,2502,2504,2506,2508,2510,2512,2514,2516,2518],{"class":93,"line":728},[91,2491,589],{"class":97},[91,2493,2494],{"class":695}," arr",[91,2496,2404],{"class":97},[91,2498,2499],{"class":127}," [",[91,2501,743],{"class":695},[91,2503,172],{"class":127},[91,2505,748],{"class":695},[91,2507,172],{"class":127},[91,2509,753],{"class":695},[91,2511,172],{"class":127},[91,2513,758],{"class":695},[91,2515,172],{"class":127},[91,2517,763],{"class":695},[91,2519,2520],{"class":127},"];\n",[91,2522,2523,2525,2528,2530,2533,2536,2539,2541,2543,2545,2547,2549],{"class":93,"line":772},[91,2524,589],{"class":97},[91,2526,2527],{"class":695}," typedArray",[91,2529,2404],{"class":97},[91,2531,2532],{"class":97}," new",[91,2534,2535],{"class":123}," Uint8Array",[91,2537,2538],{"class":127},"([",[91,2540,790],{"class":695},[91,2542,172],{"class":127},[91,2544,795],{"class":695},[91,2546,172],{"class":127},[91,2548,800],{"class":695},[91,2550,2551],{"class":127},"]);\n",[91,2553,2554],{"class":93,"line":808},[91,2555,269],{"emptyLinePlaceholder":268},[91,2557,2558,2561,2564,2566,2569,2572],{"class":93,"line":855},[91,2559,2560],{"class":127},"console.",[91,2562,2563],{"class":123},"log",[91,2565,166],{"class":127},[91,2567,2568],{"class":123},"sum",[91,2570,2571],{"class":127},"(arr)); ",[91,2573,2574],{"class":116},"\u002F\u002F 15\n",[91,2576,2577,2579,2581,2583,2585,2588],{"class":93,"line":860},[91,2578,2560],{"class":127},[91,2580,2563],{"class":123},[91,2582,166],{"class":127},[91,2584,2568],{"class":123},[91,2586,2587],{"class":127},"(typedArray)); ",[91,2589,2590],{"class":116},"\u002F\u002F 60\n",[91,2592,2593,2595,2597,2599,2602,2605,2607,2609,2611,2614],{"class":93,"line":872},[91,2594,2560],{"class":127},[91,2596,2563],{"class":123},[91,2598,166],{"class":127},[91,2600,2601],{"class":123},"sumRange",[91,2603,2604],{"class":127},"(arr, ",[91,2606,743],{"class":695},[91,2608,172],{"class":127},[91,2610,758],{"class":695},[91,2612,2613],{"class":127},")); ",[91,2615,2616],{"class":116},"\u002F\u002F 2+3+4 = 9\n",[524,2618,2620],{"id":2619},"key-concepts-behind-span-functions","Key Concepts Behind \"Span\" Functions:",[2622,2623,2624,2630,2636],"ul",{},[22,2625,2626,2629],{},[25,2627,2628],{},"Non-owning:"," The function doesn't take ownership or copy the data; it just operates on a view.",[22,2631,2632,2635],{},[25,2633,2634],{},"Contiguous memory:"," It assumes elements are stored sequentially in memory.",[22,2637,2638,2641],{},[25,2639,2640],{},"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,2643,2644,2645,2648],{},"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,2646,2647],{},"sum(std::span\u003Cconst double>)","|general algorithm + arbitrary continuous container|Inside the function, using range-for and .size() is sufficient.|",[524,2650,2652],{"id":2651},"example-4-read-only-span-and-writable-span","Example 4: read-only span and writable span",[82,2654,2656],{"className":84,"code":2655,"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,2657,2658,2664,2670,2676,2680,2707,2711,2721,2725,2741,2745,2761,2765,2769,2801,2805,2816,2820,2830,2834,2838,2842,2850,2854,2859,2864,2891,2895,2903,2915,2921,2925,2933],{"__ignoreMap":87},[91,2659,2660,2662],{"class":93,"line":94},[91,2661,98],{"class":97},[91,2663,539],{"class":101},[91,2665,2666,2668],{"class":93,"line":120},[91,2667,98],{"class":97},[91,2669,102],{"class":101},[91,2671,2672,2674],{"class":93,"line":146},[91,2673,98],{"class":97},[91,2675,552],{"class":101},[91,2677,2678],{"class":93,"line":184},[91,2679,269],{"emptyLinePlaceholder":268},[91,2681,2682,2684,2687,2689,2691,2693,2695,2697,2699,2701,2703,2705],{"class":93,"line":211},[91,2683,573],{"class":97},[91,2685,2686],{"class":123}," print",[91,2688,166],{"class":127},[91,2690,124],{"class":123},[91,2692,151],{"class":127},[91,2694,91],{"class":123},[91,2696,131],{"class":127},[91,2698,589],{"class":97},[91,2700,592],{"class":97},[91,2702,160],{"class":127},[91,2704,345],{"class":597},[91,2706,600],{"class":127},[91,2708,2709],{"class":93,"line":238},[91,2710,605],{"class":127},[91,2712,2713,2715,2717,2719],{"class":93,"line":265},[91,2714,643],{"class":97},[91,2716,646],{"class":127},[91,2718,649],{"class":97},[91,2720,652],{"class":127},[91,2722,2723],{"class":93,"line":272},[91,2724,657],{"class":127},[91,2726,2727,2729,2731,2733,2735,2737,2739],{"class":93,"line":278},[91,2728,662],{"class":123},[91,2730,613],{"class":127},[91,2732,616],{"class":97},[91,2734,669],{"class":127},[91,2736,616],{"class":97},[91,2738,674],{"class":101},[91,2740,638],{"class":127},[91,2742,2743],{"class":93,"line":292},[91,2744,681],{"class":127},[91,2746,2747,2749,2751,2753,2755,2757,2759],{"class":93,"line":305},[91,2748,610],{"class":123},[91,2750,613],{"class":127},[91,2752,616],{"class":97},[91,2754,692],{"class":101},[91,2756,696],{"class":695},[91,2758,699],{"class":101},[91,2760,638],{"class":127},[91,2762,2763],{"class":93,"line":314},[91,2764,706],{"class":127},[91,2766,2767],{"class":93,"line":327},[91,2768,269],{"emptyLinePlaceholder":268},[91,2770,2771,2773,2776,2778,2780,2782,2784,2786,2788,2790,2792,2794,2796,2799],{"class":93,"line":340},[91,2772,573],{"class":97},[91,2774,2775],{"class":123}," add_offset",[91,2777,166],{"class":127},[91,2779,124],{"class":123},[91,2781,151],{"class":127},[91,2783,91],{"class":123},[91,2785,131],{"class":127},[91,2787,649],{"class":97},[91,2789,160],{"class":127},[91,2791,345],{"class":597},[91,2793,172],{"class":127},[91,2795,649],{"class":97},[91,2797,2798],{"class":597}," offset",[91,2800,600],{"class":127},[91,2802,2803],{"class":93,"line":353},[91,2804,605],{"class":127},[91,2806,2807,2809,2811,2814],{"class":93,"line":367},[91,2808,643],{"class":97},[91,2810,646],{"class":127},[91,2812,2813],{"class":97},"int&",[91,2815,652],{"class":127},[91,2817,2818],{"class":93,"line":381},[91,2819,657],{"class":127},[91,2821,2822,2825,2827],{"class":93,"line":723},[91,2823,2824],{"class":127},"        n ",[91,2826,1496],{"class":97},[91,2828,2829],{"class":127}," offset;\n",[91,2831,2832],{"class":93,"line":728},[91,2833,681],{"class":127},[91,2835,2836],{"class":93,"line":772},[91,2837,706],{"class":127},[91,2839,2840],{"class":93,"line":808},[91,2841,269],{"emptyLinePlaceholder":268},[91,2843,2844,2846,2848],{"class":93,"line":855},[91,2845,649],{"class":97},[91,2847,717],{"class":123},[91,2849,720],{"class":127},[91,2851,2852],{"class":93,"line":860},[91,2853,605],{"class":127},[91,2855,2856],{"class":93,"line":872},[91,2857,2858],{"class":116},"    \u002F\u002F 程序从 main 函数开始执行，下面的语句会按顺序运行。\n",[91,2860,2861],{"class":93,"line":883},[91,2862,2863],{"class":116},"    \u002F\u002F vector 是动态数组，元素数量可以在运行时变化。\n",[91,2865,2866,2868,2870,2872,2875,2877,2879,2881,2883,2885,2887,2889],{"class":93,"line":894},[91,2867,610],{"class":123},[91,2869,777],{"class":127},[91,2871,780],{"class":97},[91,2873,2874],{"class":127}," values ",[91,2876,737],{"class":97},[91,2878,740],{"class":127},[91,2880,790],{"class":695},[91,2882,172],{"class":127},[91,2884,795],{"class":695},[91,2886,172],{"class":127},[91,2888,800],{"class":695},[91,2890,1011],{"class":127},[91,2892,2893],{"class":93,"line":899},[91,2894,269],{"emptyLinePlaceholder":268},[91,2896,2897,2900],{"class":93,"line":910},[91,2898,2899],{"class":123},"    print",[91,2901,2902],{"class":127},"(values);\n",[91,2904,2905,2908,2911,2913],{"class":93,"line":1289},[91,2906,2907],{"class":123},"    add_offset",[91,2909,2910],{"class":127},"(values, ",[91,2912,763],{"class":695},[91,2914,1064],{"class":127},[91,2916,2917,2919],{"class":93,"line":1295},[91,2918,2899],{"class":123},[91,2920,2902],{"class":127},[91,2922,2923],{"class":93,"line":1314},[91,2924,269],{"emptyLinePlaceholder":268},[91,2926,2927,2929,2931],{"class":93,"line":1332},[91,2928,902],{"class":97},[91,2930,905],{"class":695},[91,2932,638],{"class":127},[91,2934,2935],{"class":93,"line":1363},[91,2936,706],{"class":127},[15,2938,2939,918],{},[25,2940,917],{},[82,2942,2945],{"className":2943,"code":2944,"language":924},[922],"10 20 30\n15 25 35\n",[29,2946,2944],{"__ignoreMap":87},[15,2948,2949,2952,2953,2956,2957,2960,2961,2964,2965,2968,2969,2971],{},[29,2950,2951],{},"print"," is read-only, so ",[29,2954,2955],{},"span\u003Cconst int>"," is used; ",[29,2958,2959],{},"add_offset"," needs in-place modification, so ",[29,2962,2963],{},"span\u003Cint>"," is used. This is more versatile than passing ",[29,2966,2967],{},"vector\u003Cint>&",", since it can also accept ",[29,2970,230],{}," and C arrays.",[10,2973,2975],{"id":2974},"common-errors","Common Errors",[15,2977,2978],{},[25,2979,2980],{},"Error 1: span outlives the data it references",[82,2982,2984],{"className":84,"code":2983,"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,2985,2986,3005,3009,3036,3056],{"__ignoreMap":87},[91,2987,2988,2990,2992,2994,2996,2998,3000,3003],{"class":93,"line":94},[91,2989,124],{"class":123},[91,2991,151],{"class":127},[91,2993,91],{"class":123},[91,2995,131],{"class":127},[91,2997,649],{"class":97},[91,2999,160],{"class":127},[91,3001,3002],{"class":123},"make_span",[91,3004,720],{"class":127},[91,3006,3007],{"class":93,"line":120},[91,3008,605],{"class":127},[91,3010,3011,3013,3015,3017,3020,3022,3024,3026,3028,3030,3032,3034],{"class":93,"line":146},[91,3012,610],{"class":123},[91,3014,777],{"class":127},[91,3016,780],{"class":97},[91,3018,3019],{"class":127}," v ",[91,3021,737],{"class":97},[91,3023,740],{"class":127},[91,3025,743],{"class":695},[91,3027,172],{"class":127},[91,3029,748],{"class":695},[91,3031,172],{"class":127},[91,3033,753],{"class":695},[91,3035,1011],{"class":127},[91,3037,3038,3040,3042,3044,3046,3048,3050,3053],{"class":93,"line":184},[91,3039,902],{"class":97},[91,3041,2172],{"class":123},[91,3043,151],{"class":127},[91,3045,91],{"class":123},[91,3047,131],{"class":127},[91,3049,649],{"class":97},[91,3051,3052],{"class":127},">(v);",[91,3054,3055],{"class":116},"  \u002F\u002F ❌ v 是局部变量，span 成为悬挂视图！\n",[91,3057,3058],{"class":93,"line":211},[91,3059,706],{"class":127},[15,3061,3062],{},"The correct approach: span is merely a view; you must ensure the underlying data outlives the span.",[15,3064,3065],{},[25,3066,3067],{},"Error 2: Receiving a temporary object with span",[82,3069,3071],{"className":84,"code":3070,"language":86,"meta":87,"style":87},"std::span\u003Cconst int> sp = std::vector\u003Cint>{1, 2, 3};  \u002F\u002F ❌ 临时对象已销毁！\n",[29,3072,3073],{"__ignoreMap":87},[91,3074,3075,3077,3079,3082,3085,3088,3090,3092,3094,3096,3099,3101,3103,3105,3107,3109,3111],{"class":93,"line":94},[91,3076,124],{"class":123},[91,3078,128],{"class":127},[91,3080,3081],{"class":97},"\u003Cconst",[91,3083,3084],{"class":97}," int>",[91,3086,3087],{"class":127}," sp ",[91,3089,737],{"class":97},[91,3091,2172],{"class":123},[91,3093,777],{"class":127},[91,3095,780],{"class":97},[91,3097,3098],{"class":127},"{",[91,3100,743],{"class":695},[91,3102,172],{"class":127},[91,3104,748],{"class":695},[91,3106,172],{"class":127},[91,3108,753],{"class":695},[91,3110,766],{"class":127},[91,3112,3113],{"class":116},"  \u002F\u002F ❌ 临时对象已销毁！\n",[15,3115,3116],{},"Correct approach: first create the named container, then pass it to span.",[15,3118,3119],{},[25,3120,3121],{},"Error 3: Believing that span can be used for non-contiguous containers",[82,3123,3125],{"className":84,"code":3124,"language":86,"meta":87,"style":87},"std::list\u003Cint> lst = {1, 2, 3};\nstd::span\u003Cint> sp(lst);  \u002F\u002F ❌ list 不连续！\n",[29,3126,3127,3155],{"__ignoreMap":87},[91,3128,3129,3131,3134,3136,3139,3141,3143,3145,3147,3149,3151,3153],{"class":93,"line":94},[91,3130,124],{"class":123},[91,3132,3133],{"class":127},"::list",[91,3135,780],{"class":97},[91,3137,3138],{"class":127}," lst ",[91,3140,737],{"class":97},[91,3142,740],{"class":127},[91,3144,743],{"class":695},[91,3146,172],{"class":127},[91,3148,748],{"class":695},[91,3150,172],{"class":127},[91,3152,753],{"class":695},[91,3154,1011],{"class":127},[91,3156,3157,3159,3161,3163,3165,3167,3169,3171,3173,3176,3178],{"class":93,"line":120},[91,3158,124],{"class":123},[91,3160,151],{"class":127},[91,3162,91],{"class":123},[91,3164,131],{"class":127},[91,3166,649],{"class":97},[91,3168,160],{"class":127},[91,3170,163],{"class":123},[91,3172,166],{"class":127},[91,3174,3175],{"class":123},"lst",[91,3177,178],{"class":127},[91,3179,3180],{"class":116},"  \u002F\u002F ❌ list 不连续！\n",[15,3182,3183],{},"Correct practice: span is only suitable for contiguous memory containers (vector, array, C arrays, and some scenarios of deque).",[10,3185,3186],{"id":3186},"使用建议",[2622,3188,3189,3192,3195,3198,3201],{},[22,3190,3191],{},"明确目标：在开始前确定您的具体需求，以便选择最合适的工具或教程。",[22,3193,3194],{},"充分利用资源：参考官方文档、教程和博客，这些资料能帮助您快速上手并解决问题。",[22,3196,3197],{},"实践应用：通过动手操作项目或编写代码来巩固学习成果，提升实际操作能力。",[22,3199,3200],{},"问题解决：遇到困难时，查阅参考资料或寻求社区支持，逐步培养独立解决问题的能力。",[22,3202,3203],{},"分享经验：完成项目后，可以撰写文章或博客分享心得，帮助其他学习者。",[15,3205,3206],{},"如果需要针对特定领域（如单片机、机器人或环境搭建）的进一步建议，请提供更多信息，我将为您细化内容。",[19,3208,3209,3221,3227,3236,3246],{},[22,3210,3211,3216,3217,3220],{},[25,3212,3213,3214],{},"For function parameters, prefer using ",[29,3215,491],{},": it's more generic than ",[29,3218,3219],{},"const vector\u003CT>&",".",[22,3222,3223,3226],{},[25,3224,3225],{},"Span is just a view",": It doesn't own the data and must ensure the underlying data survives.",[22,3228,3229,3232,3233,3235],{},[25,3230,3231],{},"Sub-view zero-copy",": ",[29,3234,358],{}," and similar operations are very efficient.",[22,3237,3238,3241,3242,3245],{},[25,3239,3240],{},"Only Available in C++20",": If your project uses C++17, you can use ",[29,3243,3244],{},"std::string_view"," (a string version of span) or a third-party library.",[22,3247,3248,3253],{},[25,3249,3250,3251],{},"Read-only parameters take priority ",[29,3252,463],{},": This allows vectors, arrays, and C arrays to be passed, and they won’t be modified by functions.",[10,3255,3257],{"id":3256},"summary","Summary",[2622,3259,3260,3265,3268,3278,3281],{},[22,3261,3262,3264],{},[29,3263,60],{}," is a non-owning contiguous memory view.",[22,3266,3267],{},"Can uniformly handle vector, array, and C array—a single parameter type covers all.",[22,3269,3270,3271,172,3273,172,3275,3277],{},"Supports subview slicing (",[29,3272,358],{},[29,3274,372],{},[29,3276,386],{},"), zero copy.",[22,3279,3280],{},"The lifecycle of a span cannot exceed that of the underlying data.",[22,3282,3283],{},"Only applicable to continuous memory containers.",[3285,3286,3287],"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":3289},[3290,3291,3292,3293,3294,3295,3296,3298,3303,3304,3311,3312,3313],{"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":3297},"The difference between span\u003Cconst T> and span\u003CT>",{"id":521,"depth":120,"text":522,"children":3299},[3300,3301,3302],{"id":526,"depth":146,"text":527},{"id":929,"depth":146,"text":930},{"id":1392,"depth":146,"text":1393},{"id":1822,"depth":120,"text":1823},{"id":1829,"depth":120,"text":1830,"children":3305},[3306,3308,3309,3310],{"id":1933,"depth":146,"text":3307},"1. In C++ (using std::span)",{"id":2291,"depth":146,"text":2292},{"id":2619,"depth":146,"text":2620},{"id":2651,"depth":146,"text":2652},{"id":2974,"depth":120,"text":2975},{"id":3186,"depth":120,"text":3186},{"id":3256,"depth":120,"text":3257},"\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","UDCC2txgIwWkax-w5yhaWmf22-0s15kcilm6c2Uz-1Q",[3333,3339,3344,3349,3354,3359,3364,3368,3373,3378,3383,3388,3393,3398,3403,3408,3413,3418,3423,3428,3433,3438,3443,3448,3453,3457,3462,3467,3472,3477,3482,3487,3492,3497,3502,3507,3512,3517,3522,3527,3532,3537,3542,3547,3552,3557,3562,3567,3572,3577,3582,3587,3592,3597,3602,3603,3608,3613,3618,3623,3628,3633,3638,3643,3648,3653,3658,3663,3668,3673,3678,3683,3688,3693,3698,3703,3708,3713,3718,3723,3728,3733,3738,3743],{"path":3334,"stem":3335,"title":3336,"date":3316,"chapterOrder":3337,"chapterDepth":3338,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3340,"stem":3341,"title":3342,"date":3316,"chapterOrder":3343,"chapterDepth":3338,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3345,"stem":3346,"title":3347,"date":3316,"chapterOrder":3348,"chapterDepth":3338,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3350,"stem":3351,"title":3352,"date":3316,"chapterOrder":3353,"chapterDepth":3338,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3355,"stem":3356,"title":3357,"date":3316,"chapterOrder":3358,"chapterDepth":3338,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3360,"stem":3361,"title":3362,"date":3316,"chapterOrder":3363,"chapterDepth":3338,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3365,"stem":3366,"title":230,"date":3316,"chapterOrder":3367,"chapterDepth":3338,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0700-shu-zu","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0700-数组","0700",{"path":3369,"stem":3370,"title":3371,"date":3316,"chapterOrder":3372,"chapterDepth":3338,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3374,"stem":3375,"title":3376,"date":3316,"chapterOrder":3377,"chapterDepth":3338,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0900-zhi-zhen","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0900-指针","pointer","0900",{"path":3379,"stem":3380,"title":3381,"date":3316,"chapterOrder":3382,"chapterDepth":3338,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3384,"stem":3385,"title":3386,"date":3316,"chapterOrder":3387,"chapterDepth":3338,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3389,"stem":3390,"title":3391,"date":3316,"chapterOrder":3392,"chapterDepth":3338,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1200-yin-yong","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1200-引用","reference","1200",{"path":3394,"stem":3395,"title":3396,"date":3316,"chapterOrder":3397,"chapterDepth":3338,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1300-han-shu-ti-gao","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1300-函数提高","Function Optimization","1300",{"path":3399,"stem":3400,"title":3401,"date":3316,"chapterOrder":3402,"chapterDepth":3338,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1350-ming-ming-kong-jian","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1350-命名空间","命名空间","1350",{"path":3404,"stem":3405,"title":3406,"date":3316,"chapterOrder":3407,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3409,"stem":3410,"title":3411,"date":3316,"chapterOrder":3412,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3414,"stem":3415,"title":3416,"date":3316,"chapterOrder":3417,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3419,"stem":3420,"title":3421,"date":3316,"chapterOrder":3422,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3424,"stem":3425,"title":3426,"date":3316,"chapterOrder":3427,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3429,"stem":3430,"title":3431,"date":3316,"chapterOrder":3432,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3434,"stem":3435,"title":3436,"date":3316,"chapterOrder":3437,"chapterDepth":3338,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3439,"stem":3440,"title":3441,"date":3316,"chapterOrder":3442,"chapterDepth":3338,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1450-han-shu-zhi-zhen","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1450-函数指针","function pointer","1450",{"path":3444,"stem":3445,"title":3446,"date":3316,"chapterOrder":3447,"chapterDepth":3338,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3449,"stem":3450,"title":3451,"date":3316,"chapterOrder":3452,"chapterDepth":3338,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3454,"stem":3455,"title":1979,"date":3316,"chapterOrder":3456,"chapterDepth":3338,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1700-mu-ban","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1700-模板","1700",{"path":3458,"stem":3459,"title":3460,"date":3316,"chapterOrder":3461,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3463,"stem":3464,"title":3465,"date":3316,"chapterOrder":3466,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3468,"stem":3469,"title":3470,"date":3316,"chapterOrder":3471,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3473,"stem":3474,"title":3475,"date":3316,"chapterOrder":3476,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3478,"stem":3479,"title":3480,"date":3316,"chapterOrder":3481,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3483,"stem":3484,"title":3485,"date":3316,"chapterOrder":3486,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3488,"stem":3489,"title":3490,"date":3316,"chapterOrder":3491,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3493,"stem":3494,"title":3495,"date":3316,"chapterOrder":3496,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3498,"stem":3499,"title":3500,"date":3316,"chapterOrder":3501,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3503,"stem":3504,"title":3505,"date":3316,"chapterOrder":3506,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3508,"stem":3509,"title":3510,"date":3316,"chapterOrder":3511,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3513,"stem":3514,"title":3515,"date":3316,"chapterOrder":3516,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3518,"stem":3519,"title":3520,"date":3316,"chapterOrder":3521,"chapterDepth":3338,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3523,"stem":3524,"title":3525,"date":3316,"chapterOrder":3526,"chapterDepth":3338,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3528,"stem":3529,"title":3530,"date":3316,"chapterOrder":3531,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3533,"stem":3534,"title":3535,"date":3316,"chapterOrder":3536,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3538,"stem":3539,"title":3540,"date":3316,"chapterOrder":3541,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3543,"stem":3544,"title":3545,"date":3316,"chapterOrder":3546,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3548,"stem":3549,"title":3550,"date":3316,"chapterOrder":3551,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3553,"stem":3554,"title":3555,"date":3316,"chapterOrder":3556,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3558,"stem":3559,"title":3560,"date":3316,"chapterOrder":3561,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3563,"stem":3564,"title":3565,"date":3316,"chapterOrder":3566,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3568,"stem":3569,"title":3570,"date":3316,"chapterOrder":3571,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3573,"stem":3574,"title":3575,"date":3316,"chapterOrder":3576,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3578,"stem":3579,"title":3580,"date":3316,"chapterOrder":3581,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3583,"stem":3584,"title":3585,"date":3316,"chapterOrder":3586,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3588,"stem":3589,"title":3590,"date":3316,"chapterOrder":3591,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3593,"stem":3594,"title":3595,"date":3316,"chapterOrder":3596,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3598,"stem":3599,"title":3600,"date":3316,"chapterOrder":3601,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3314,"stem":3330,"title":5,"date":3316,"chapterOrder":3315,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},{"path":3604,"stem":3605,"title":3606,"date":3316,"chapterOrder":3607,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3609,"stem":3610,"title":3611,"date":3316,"chapterOrder":3612,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3614,"stem":3615,"title":3616,"date":3316,"chapterOrder":3617,"chapterDepth":120,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3619,"stem":3620,"title":3621,"date":3316,"chapterOrder":3622,"chapterDepth":120,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3624,"stem":3625,"title":3626,"date":3316,"chapterOrder":3627,"chapterDepth":120,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3629,"stem":3630,"title":3631,"date":3316,"chapterOrder":3632,"chapterDepth":120,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3634,"stem":3635,"title":3636,"date":3316,"chapterOrder":3637,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3639,"stem":3640,"title":3641,"date":3316,"chapterOrder":3642,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3644,"stem":3645,"title":3646,"date":3316,"chapterOrder":3647,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3649,"stem":3650,"title":3651,"date":3316,"chapterOrder":3652,"chapterDepth":3338,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3654,"stem":3655,"title":3656,"date":3316,"chapterOrder":3657,"chapterDepth":120,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3659,"stem":3660,"title":3661,"date":3316,"chapterOrder":3662,"chapterDepth":120,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3664,"stem":3665,"title":3666,"date":3316,"chapterOrder":3667,"chapterDepth":120,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3669,"stem":3670,"title":3671,"date":3316,"chapterOrder":3672,"chapterDepth":120,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3674,"stem":3675,"title":3676,"date":3316,"chapterOrder":3677,"chapterDepth":120,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3679,"stem":3680,"title":3681,"date":3316,"chapterOrder":3682,"chapterDepth":120,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3684,"stem":3685,"title":3686,"date":3316,"chapterOrder":3687,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3689,"stem":3690,"title":3691,"date":3316,"chapterOrder":3692,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3694,"stem":3695,"title":3696,"date":3316,"chapterOrder":3697,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3699,"stem":3700,"title":3701,"date":3316,"chapterOrder":3702,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3704,"stem":3705,"title":3706,"date":3316,"chapterOrder":3707,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3709,"stem":3710,"title":3711,"date":3316,"chapterOrder":3712,"chapterDepth":3338,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3714,"stem":3715,"title":3716,"date":3316,"chapterOrder":3717,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3719,"stem":3720,"title":3721,"date":3316,"chapterOrder":3722,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3724,"stem":3725,"title":3726,"date":3316,"chapterOrder":3727,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3729,"stem":3730,"title":3731,"date":3316,"chapterOrder":3732,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3734,"stem":3735,"title":3736,"date":3316,"chapterOrder":3737,"chapterDepth":94,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3739,"stem":3740,"title":3741,"date":3316,"chapterOrder":3742,"chapterDepth":3338,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":3323},"\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":3319,"stem":3744,"title":3745,"date":3316,"chapterOrder":3324,"chapterDepth":3338,"docKey":3318,"docRoot":3319,"docTitle":3320,"isWikiDoc":268,"isWikiIndex":268},"_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002Findex","C\u002FC++ tutorial",{"variants":3747},[3748,3749,3752,3755,3758],{"path":3314,"localeSlug":3326,"i18nKey":3322},{"path":3750,"localeSlug":3751,"i18nKey":3322},"\u002Fzh-hant\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1600-std-span","zh-hant",{"path":3753,"localeSlug":3754,"i18nKey":3322},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1600-std-span","zh-hk",{"path":3756,"localeSlug":3757,"i18nKey":3322},"\u002Fzh-tw\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1600-std-span","zh-tw",{"path":3759,"localeSlug":3760,"i18nKey":3322},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1600-std-span","zh-cn",[3314,3329,3750,3329,3753,3329,3756,3329,3759,3329],1788531352034]