[{"data":1,"prerenderedAt":3125},["ShallowReactive",2],{"wiki-page-\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1600-std-span":3,"wiki-doc-items-2023-10-05-cplusplus-jiao-xue":2564,"wiki:author-members":3113},{"id":4,"title":5,"authors":6,"body":8,"chapterDepth":91,"chapterOrder":2552,"date":2553,"description":84,"docKey":2554,"docRoot":2555,"docTitle":2556,"extension":2557,"isWikiDoc":264,"isWikiIndex":2558,"meta":2559,"navigation":264,"path":2560,"seo":2561,"stem":2562,"wikiDepth":91,"__hash__":2563},"wiki\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1600-std-span.md","std::span",[7],"董佳辉",{"type":9,"value":10,"toc":2530},"minimark",[11,15,19,42,51,54,68,72,75,78,100,103,388,391,452,463,505,516,519,524,909,915,923,927,1376,1380,1386,1390,1806,1810,1816,1818,1821,1824,1912,1916,2200,2204,2210,2235,2238,2243,2323,2326,2331,2377,2380,2385,2444,2447,2450,2496,2499,2526],[12,13,14],"h2",{"id":14},"本节解决什么问题",[16,17,18],"p",{},"你要写一个函数，处理一段连续数据——可以是 vector、array、C 数组。在 C++20 之前，你有两种选择：",[20,21,22,34],"ol",{},[23,24,25,33],"li",{},[26,27,28,29],"strong",{},"传 ",[30,31,32],"code",{},"const std::vector\u003CT>&","：只能接收 vector，不能接收 array 或 C 数组。",[23,35,36,41],{},[26,37,28,38],{},[30,39,40],{},"const T* data, size_t size","：能接收所有，但丢失了大小信息，容易写错。",[16,43,44,46,47,50],{},[30,45,5],{}," 提供了",[26,48,49],{},"统一的只读（或可写）视图","，不拥有数据，只是一个\"窗口\"，可以统一处理所有连续内存容器。",[12,52,53],{"id":53},"这个特性是什么",[16,55,56,59,60,63,64,67],{},[30,57,58],{},"std::span\u003CT>"," 是 C++20 引入的",[26,61,62],{},"视图类型","，它不拥有数据，只是指向一段连续内存的指针 + 大小的轻量包装。你可以把它理解为\"",[26,65,66],{},"对数组的引用","\"。",[12,69,71],{"id":70},"c-标准版本","C++ 标准版本",[16,73,74],{},"C++20",[12,76,77],{"id":77},"需要的头文件",[79,80,85],"pre",{"className":81,"code":82,"language":83,"meta":84,"style":84},"language-cpp shiki shiki-themes github-light github-dark","#include \u003Cspan>\n","cpp","",[30,86,87],{"__ignoreMap":84},[88,89,92,96],"span",{"class":90,"line":91},"line",1,[88,93,95],{"class":94},"szBVR","#include",[88,97,99],{"class":98},"sZZnC"," \u003Cspan>\n",[12,101,102],{"id":102},"基本语法",[79,104,106],{"className":81,"code":105,"language":83,"meta":84,"style":84},"\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",[30,107,108,114,140,178,205,232,259,266,272,286,299,308,321,334,347,361,375],{"__ignoreMap":84},[88,109,110],{"class":90,"line":91},[88,111,113],{"class":112},"sJ8bj","\u002F\u002F span 不拥有数据，只是观察\n",[88,115,117,121,125,128,131,134,137],{"class":90,"line":116},2,[88,118,120],{"class":119},"sScJk","std",[88,122,124],{"class":123},"sVt8B","::span",[88,126,127],{"class":94},"\u003C",[88,129,130],{"class":123},"T",[88,132,133],{"class":94},">",[88,135,136],{"class":123}," sp;",[88,138,139],{"class":112},"             \u002F\u002F 空 span\n",[88,141,143,145,148,150,152,154,157,160,163,166,169,172,175],{"class":90,"line":142},3,[88,144,120],{"class":119},[88,146,147],{"class":123},"::",[88,149,88],{"class":119},[88,151,127],{"class":123},[88,153,130],{"class":119},[88,155,156],{"class":123},"> ",[88,158,159],{"class":119},"sp",[88,161,162],{"class":123},"(",[88,164,165],{"class":119},"ptr",[88,167,168],{"class":123},", ",[88,170,171],{"class":119},"size",[88,173,174],{"class":123},");",[88,176,177],{"class":112},"  \u002F\u002F 从指针 + 大小构造\n",[88,179,181,183,185,187,189,191,193,195,197,200,202],{"class":90,"line":180},4,[88,182,120],{"class":119},[88,184,147],{"class":123},[88,186,88],{"class":119},[88,188,127],{"class":123},[88,190,130],{"class":119},[88,192,156],{"class":123},[88,194,159],{"class":119},[88,196,162],{"class":123},[88,198,199],{"class":119},"vector",[88,201,174],{"class":123},[88,203,204],{"class":112},"     \u002F\u002F 从 vector 构造\n",[88,206,208,210,212,214,216,218,220,222,224,227,229],{"class":90,"line":207},5,[88,209,120],{"class":119},[88,211,147],{"class":123},[88,213,88],{"class":119},[88,215,127],{"class":123},[88,217,130],{"class":119},[88,219,156],{"class":123},[88,221,159],{"class":119},[88,223,162],{"class":123},[88,225,226],{"class":119},"array",[88,228,174],{"class":123},[88,230,231],{"class":112},"      \u002F\u002F 从 std::array 构造\n",[88,233,235,237,239,241,243,245,247,249,251,254,256],{"class":90,"line":234},6,[88,236,120],{"class":119},[88,238,147],{"class":123},[88,240,88],{"class":119},[88,242,127],{"class":123},[88,244,130],{"class":119},[88,246,156],{"class":123},[88,248,159],{"class":119},[88,250,162],{"class":123},[88,252,253],{"class":119},"c_array",[88,255,174],{"class":123},[88,257,258],{"class":112},"    \u002F\u002F 从 C 数组构造\n",[88,260,262],{"class":90,"line":261},7,[88,263,265],{"emptyLinePlaceholder":264},true,"\n",[88,267,269],{"class":90,"line":268},8,[88,270,271],{"class":112},"\u002F\u002F 常用操作\n",[88,273,275,278,280,283],{"class":90,"line":274},9,[88,276,277],{"class":123},"sp.",[88,279,171],{"class":119},[88,281,282],{"class":123},"();",[88,284,285],{"class":112},"      \u002F\u002F 元素个数\n",[88,287,289,291,294,296],{"class":90,"line":288},10,[88,290,277],{"class":123},[88,292,293],{"class":119},"empty",[88,295,282],{"class":123},[88,297,298],{"class":112},"     \u002F\u002F 是否为空\n",[88,300,302,305],{"class":90,"line":301},11,[88,303,304],{"class":123},"sp[i];",[88,306,307],{"class":112},"          \u002F\u002F 下标访问\n",[88,309,311,313,316,318],{"class":90,"line":310},12,[88,312,277],{"class":123},[88,314,315],{"class":119},"front",[88,317,282],{"class":123},[88,319,320],{"class":112},"     \u002F\u002F 第一个元素\n",[88,322,324,326,329,331],{"class":90,"line":323},13,[88,325,277],{"class":123},[88,327,328],{"class":119},"back",[88,330,282],{"class":123},[88,332,333],{"class":112},"      \u002F\u002F 最后一个元素\n",[88,335,337,339,342,344],{"class":90,"line":336},14,[88,338,277],{"class":123},[88,340,341],{"class":119},"data",[88,343,282],{"class":123},[88,345,346],{"class":112},"      \u002F\u002F 底层指针\n",[88,348,350,352,355,358],{"class":90,"line":349},15,[88,351,277],{"class":123},[88,353,354],{"class":119},"subspan",[88,356,357],{"class":123},"(pos, count);",[88,359,360],{"class":112},"  \u002F\u002F 子视图\n",[88,362,364,366,369,372],{"class":90,"line":363},16,[88,365,277],{"class":123},[88,367,368],{"class":119},"first",[88,370,371],{"class":123},"(n);",[88,373,374],{"class":112},"    \u002F\u002F 前 n 个元素的子视图\n",[88,376,378,380,383,385],{"class":90,"line":377},17,[88,379,277],{"class":123},[88,381,382],{"class":119},"last",[88,384,371],{"class":123},[88,386,387],{"class":112},"     \u002F\u002F 后 n 个元素的子视图\n",[12,389,390],{"id":390},"常用用法",[392,393,394,408],"table",{},[395,396,397],"thead",{},[398,399,400,405],"tr",{},[401,402,404],"th",{"align":403},"left","用法",[401,406,407],{"align":403},"说明",[409,410,411,422,432,442],"tbody",{},[398,412,413,419],{},[414,415,416],"td",{"align":403},[30,417,418],{},"void f(std::span\u003Cconst int> data)",[414,420,421],{"align":403},"接收任何连续 int 容器",[398,423,424,429],{},[414,425,426],{"align":403},[30,427,428],{},"std::span\u003Cint>(vec)",[414,430,431],{"align":403},"从 vector 创建",[398,433,434,439],{},[414,435,436],{"align":403},[30,437,438],{},"std::span\u003Cint>(arr)",[414,440,441],{"align":403},"从 C 数组创建",[398,443,444,449],{},[414,445,446],{"align":403},[30,447,448],{},"sp.subspan(offset, count)",[414,450,451],{"align":403},"创建子视图（无拷贝）",[12,453,455,458,459,462],{"id":454},"spanconst-t-和-spant-的区别",[30,456,457],{},"span\u003Cconst T>"," 和 ",[30,460,461],{},"span\u003CT>"," 的区别",[392,464,465,478],{},[395,466,467],{},[398,468,469,472,475],{},[401,470,471],{"align":403},"写法",[401,473,474],{"align":403},"能否修改底层数据",[401,476,477],{"align":403},"常见用途",[409,479,480,493],{},[398,481,482,487,490],{},[414,483,484],{"align":403},[30,485,486],{},"std::span\u003Cconst T>",[414,488,489],{"align":403},"不能修改",[414,491,492],{"align":403},"只读处理、统计、打印、校验",[398,494,495,499,502],{},[414,496,497],{"align":403},[30,498,58],{},[414,500,501],{"align":403},"可以修改",[414,503,504],{"align":403},"填充缓冲区、归一化数据、原地滤波",[16,506,507,509,510,512,513,515],{},[30,508,88],{}," 不拥有数据，所以“是否 const”非常重要。函数参数默认优先写 ",[30,511,486],{},"，只有明确要修改原数据时才写 ",[30,514,58],{},"。",[12,517,518],{"id":518},"示例代码",[520,521,523],"h3",{"id":522},"示例-1用-span-统一接收不同容器类型","示例 1：用 span 统一接收不同容器类型",[79,525,527],{"className":81,"code":526,"language":83,"meta":84,"style":84},"#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",[30,528,529,536,542,549,556,560,565,597,602,635,649,654,673,678,698,703,707,717,722,766,802,849,854,866,877,888,893,904],{"__ignoreMap":84},[88,530,531,533],{"class":90,"line":91},[88,532,95],{"class":94},[88,534,535],{"class":98}," \u003Ciostream>\n",[88,537,538,540],{"class":90,"line":116},[88,539,95],{"class":94},[88,541,99],{"class":98},[88,543,544,546],{"class":90,"line":142},[88,545,95],{"class":94},[88,547,548],{"class":98}," \u003Cvector>\n",[88,550,551,553],{"class":90,"line":180},[88,552,95],{"class":94},[88,554,555],{"class":98}," \u003Carray>\n",[88,557,558],{"class":90,"line":207},[88,559,265],{"emptyLinePlaceholder":264},[88,561,562],{"class":90,"line":234},[88,563,564],{"class":112},"\u002F\u002F 一个函数处理所有类型的连续 int 数据\n",[88,566,567,570,573,575,577,579,581,583,586,589,591,594],{"class":90,"line":261},[88,568,569],{"class":94},"void",[88,571,572],{"class":119}," print_data",[88,574,162],{"class":123},[88,576,120],{"class":119},[88,578,147],{"class":123},[88,580,88],{"class":119},[88,582,127],{"class":123},[88,584,585],{"class":94},"const",[88,587,588],{"class":94}," int",[88,590,156],{"class":123},[88,592,341],{"class":593},"s4XuR",[88,595,596],{"class":123},")\n",[88,598,599],{"class":90,"line":268},[88,600,601],{"class":123},"{\n",[88,603,604,607,610,613,616,619,622,624,627,629,632],{"class":90,"line":274},[88,605,606],{"class":119},"    std",[88,608,609],{"class":123},"::cout ",[88,611,612],{"class":94},"\u003C\u003C",[88,614,615],{"class":98}," \"size = \"",[88,617,618],{"class":94}," \u003C\u003C",[88,620,621],{"class":123}," data.",[88,623,171],{"class":119},[88,625,626],{"class":123},"() ",[88,628,612],{"class":94},[88,630,631],{"class":98}," \": \"",[88,633,634],{"class":123},";\n",[88,636,637,640,643,646],{"class":90,"line":288},[88,638,639],{"class":94},"    for",[88,641,642],{"class":123}," (",[88,644,645],{"class":94},"int",[88,647,648],{"class":123}," n : data)\n",[88,650,651],{"class":90,"line":301},[88,652,653],{"class":123},"    {\n",[88,655,656,659,661,663,666,668,671],{"class":90,"line":310},[88,657,658],{"class":119},"        std",[88,660,609],{"class":123},[88,662,612],{"class":94},[88,664,665],{"class":123}," n ",[88,667,612],{"class":94},[88,669,670],{"class":98}," \" \"",[88,672,634],{"class":123},[88,674,675],{"class":90,"line":323},[88,676,677],{"class":123},"    }\n",[88,679,680,682,684,686,689,693,696],{"class":90,"line":336},[88,681,606],{"class":119},[88,683,609],{"class":123},[88,685,612],{"class":94},[88,687,688],{"class":98}," \"",[88,690,692],{"class":691},"sj4cs","\\n",[88,694,695],{"class":98},"\"",[88,697,634],{"class":123},[88,699,700],{"class":90,"line":349},[88,701,702],{"class":123},"}\n",[88,704,705],{"class":90,"line":363},[88,706,265],{"emptyLinePlaceholder":264},[88,708,709,711,714],{"class":90,"line":377},[88,710,645],{"class":94},[88,712,713],{"class":119}," main",[88,715,716],{"class":123},"()\n",[88,718,720],{"class":90,"line":719},18,[88,721,601],{"class":123},[88,723,725,728,731,734,737,740,742,745,747,750,752,755,757,760,763],{"class":90,"line":724},19,[88,726,727],{"class":94},"    int",[88,729,730],{"class":123}," c_arr[] ",[88,732,733],{"class":94},"=",[88,735,736],{"class":123}," {",[88,738,739],{"class":691},"1",[88,741,168],{"class":123},[88,743,744],{"class":691},"2",[88,746,168],{"class":123},[88,748,749],{"class":691},"3",[88,751,168],{"class":123},[88,753,754],{"class":691},"4",[88,756,168],{"class":123},[88,758,759],{"class":691},"5",[88,761,762],{"class":123},"};",[88,764,765],{"class":112},"              \u002F\u002F C 数组\n",[88,767,769,771,774,777,780,782,784,787,789,792,794,797,799],{"class":90,"line":768},20,[88,770,606],{"class":119},[88,772,773],{"class":123},"::vector",[88,775,776],{"class":94},"\u003Cint>",[88,778,779],{"class":123}," vec ",[88,781,733],{"class":94},[88,783,736],{"class":123},[88,785,786],{"class":691},"10",[88,788,168],{"class":123},[88,790,791],{"class":691},"20",[88,793,168],{"class":123},[88,795,796],{"class":691},"30",[88,798,762],{"class":123},[88,800,801],{"class":112},"         \u002F\u002F vector\n",[88,803,805,807,810,813,815,817,819,822,824,826,829,831,834,836,839,841,844,846],{"class":90,"line":804},21,[88,806,606],{"class":119},[88,808,809],{"class":123},"::array",[88,811,812],{"class":94},"\u003Cint",[88,814,168],{"class":123},[88,816,754],{"class":691},[88,818,133],{"class":94},[88,820,821],{"class":123}," arr ",[88,823,733],{"class":94},[88,825,736],{"class":123},[88,827,828],{"class":691},"100",[88,830,168],{"class":123},[88,832,833],{"class":691},"200",[88,835,168],{"class":123},[88,837,838],{"class":691},"300",[88,840,168],{"class":123},[88,842,843],{"class":691},"400",[88,845,762],{"class":123},[88,847,848],{"class":112},"  \u002F\u002F std::array\n",[88,850,852],{"class":90,"line":851},22,[88,853,265],{"emptyLinePlaceholder":264},[88,855,857,860,863],{"class":90,"line":856},23,[88,858,859],{"class":119},"    print_data",[88,861,862],{"class":123},"(c_arr);",[88,864,865],{"class":112},"   \u002F\u002F ✅ C 数组\n",[88,867,869,871,874],{"class":90,"line":868},24,[88,870,859],{"class":119},[88,872,873],{"class":123},"(vec);",[88,875,876],{"class":112},"      \u002F\u002F ✅ vector\n",[88,878,880,882,885],{"class":90,"line":879},25,[88,881,859],{"class":119},[88,883,884],{"class":123},"(arr);",[88,886,887],{"class":112},"      \u002F\u002F ✅ std::array\n",[88,889,891],{"class":90,"line":890},26,[88,892,265],{"emptyLinePlaceholder":264},[88,894,896,899,902],{"class":90,"line":895},27,[88,897,898],{"class":94},"    return",[88,900,901],{"class":691}," 0",[88,903,634],{"class":123},[88,905,907],{"class":90,"line":906},28,[88,908,702],{"class":123},[16,910,911,914],{},[26,912,913],{},"运行结果","：",[79,916,921],{"className":917,"code":919,"language":920},[918],"language-text","size = 5: 1 2 3 4 5 \nsize = 3: 10 20 30 \nsize = 4: 100 200 300 400 \n","text",[30,922,919],{"__ignoreMap":84},[520,924,926],{"id":925},"示例-2在示例-1-基础上span-的子视图subspan","示例 2：在示例 1 基础上，span 的子视图（subspan）",[79,928,930],{"className":81,"code":929,"language":83,"meta":84,"style":84},"#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",[30,931,932,938,944,950,954,962,966,1008,1012,1026,1030,1035,1061,1074,1099,1115,1119,1124,1143,1156,1181,1197,1201,1206,1225,1238,1263,1279,1283,1289,1308,1326,1357,1362,1371],{"__ignoreMap":84},[88,933,934,936],{"class":90,"line":91},[88,935,95],{"class":94},[88,937,535],{"class":98},[88,939,940,942],{"class":90,"line":116},[88,941,95],{"class":94},[88,943,99],{"class":98},[88,945,946,948],{"class":90,"line":142},[88,947,95],{"class":94},[88,949,548],{"class":98},[88,951,952],{"class":90,"line":180},[88,953,265],{"emptyLinePlaceholder":264},[88,955,956,958,960],{"class":90,"line":207},[88,957,645],{"class":94},[88,959,713],{"class":119},[88,961,716],{"class":123},[88,963,964],{"class":90,"line":234},[88,965,601],{"class":123},[88,967,968,970,972,974,976,978,980,982,984,986,988,990,992,995,997,1000,1002,1005],{"class":90,"line":261},[88,969,606],{"class":119},[88,971,773],{"class":123},[88,973,776],{"class":94},[88,975,779],{"class":123},[88,977,733],{"class":94},[88,979,736],{"class":123},[88,981,786],{"class":691},[88,983,168],{"class":123},[88,985,791],{"class":691},[88,987,168],{"class":123},[88,989,796],{"class":691},[88,991,168],{"class":123},[88,993,994],{"class":691},"40",[88,996,168],{"class":123},[88,998,999],{"class":691},"50",[88,1001,168],{"class":123},[88,1003,1004],{"class":691},"60",[88,1006,1007],{"class":123},"};\n",[88,1009,1010],{"class":90,"line":268},[88,1011,265],{"emptyLinePlaceholder":264},[88,1013,1014,1016,1018,1020,1023],{"class":90,"line":274},[88,1015,606],{"class":119},[88,1017,124],{"class":123},[88,1019,776],{"class":94},[88,1021,1022],{"class":119}," sp",[88,1024,1025],{"class":123},"(vec);\n",[88,1027,1028],{"class":90,"line":288},[88,1029,265],{"emptyLinePlaceholder":264},[88,1031,1032],{"class":90,"line":301},[88,1033,1034],{"class":112},"    \u002F\u002F 取中间 3 个元素（从索引 1 开始，取 3 个）\n",[88,1036,1037,1040,1043,1045,1048,1050,1052,1054,1056,1058],{"class":90,"line":310},[88,1038,1039],{"class":94},"    auto",[88,1041,1042],{"class":123}," mid ",[88,1044,733],{"class":94},[88,1046,1047],{"class":123}," sp.",[88,1049,354],{"class":119},[88,1051,162],{"class":123},[88,1053,739],{"class":691},[88,1055,168],{"class":123},[88,1057,749],{"class":691},[88,1059,1060],{"class":123},");\n",[88,1062,1063,1065,1067,1069,1072],{"class":90,"line":323},[88,1064,606],{"class":119},[88,1066,609],{"class":123},[88,1068,612],{"class":94},[88,1070,1071],{"class":98}," \"mid: \"",[88,1073,634],{"class":123},[88,1075,1076,1078,1080,1082,1085,1087,1089,1091,1093,1095,1097],{"class":90,"line":336},[88,1077,639],{"class":94},[88,1079,642],{"class":123},[88,1081,645],{"class":94},[88,1083,1084],{"class":123}," n : mid) ",[88,1086,120],{"class":119},[88,1088,609],{"class":123},[88,1090,612],{"class":94},[88,1092,665],{"class":123},[88,1094,612],{"class":94},[88,1096,670],{"class":98},[88,1098,634],{"class":123},[88,1100,1101,1103,1105,1107,1109,1111,1113],{"class":90,"line":349},[88,1102,606],{"class":119},[88,1104,609],{"class":123},[88,1106,612],{"class":94},[88,1108,688],{"class":98},[88,1110,692],{"class":691},[88,1112,695],{"class":98},[88,1114,634],{"class":123},[88,1116,1117],{"class":90,"line":363},[88,1118,265],{"emptyLinePlaceholder":264},[88,1120,1121],{"class":90,"line":377},[88,1122,1123],{"class":112},"    \u002F\u002F 取前 2 个\n",[88,1125,1126,1128,1131,1133,1135,1137,1139,1141],{"class":90,"line":719},[88,1127,1039],{"class":94},[88,1129,1130],{"class":123}," first2 ",[88,1132,733],{"class":94},[88,1134,1047],{"class":123},[88,1136,368],{"class":119},[88,1138,162],{"class":123},[88,1140,744],{"class":691},[88,1142,1060],{"class":123},[88,1144,1145,1147,1149,1151,1154],{"class":90,"line":724},[88,1146,606],{"class":119},[88,1148,609],{"class":123},[88,1150,612],{"class":94},[88,1152,1153],{"class":98}," \"first 2: \"",[88,1155,634],{"class":123},[88,1157,1158,1160,1162,1164,1167,1169,1171,1173,1175,1177,1179],{"class":90,"line":768},[88,1159,639],{"class":94},[88,1161,642],{"class":123},[88,1163,645],{"class":94},[88,1165,1166],{"class":123}," n : first2) ",[88,1168,120],{"class":119},[88,1170,609],{"class":123},[88,1172,612],{"class":94},[88,1174,665],{"class":123},[88,1176,612],{"class":94},[88,1178,670],{"class":98},[88,1180,634],{"class":123},[88,1182,1183,1185,1187,1189,1191,1193,1195],{"class":90,"line":804},[88,1184,606],{"class":119},[88,1186,609],{"class":123},[88,1188,612],{"class":94},[88,1190,688],{"class":98},[88,1192,692],{"class":691},[88,1194,695],{"class":98},[88,1196,634],{"class":123},[88,1198,1199],{"class":90,"line":851},[88,1200,265],{"emptyLinePlaceholder":264},[88,1202,1203],{"class":90,"line":856},[88,1204,1205],{"class":112},"    \u002F\u002F 取后 3 个\n",[88,1207,1208,1210,1213,1215,1217,1219,1221,1223],{"class":90,"line":868},[88,1209,1039],{"class":94},[88,1211,1212],{"class":123}," last3 ",[88,1214,733],{"class":94},[88,1216,1047],{"class":123},[88,1218,382],{"class":119},[88,1220,162],{"class":123},[88,1222,749],{"class":691},[88,1224,1060],{"class":123},[88,1226,1227,1229,1231,1233,1236],{"class":90,"line":879},[88,1228,606],{"class":119},[88,1230,609],{"class":123},[88,1232,612],{"class":94},[88,1234,1235],{"class":98}," \"last 3: \"",[88,1237,634],{"class":123},[88,1239,1240,1242,1244,1246,1249,1251,1253,1255,1257,1259,1261],{"class":90,"line":890},[88,1241,639],{"class":94},[88,1243,642],{"class":123},[88,1245,645],{"class":94},[88,1247,1248],{"class":123}," n : last3) ",[88,1250,120],{"class":119},[88,1252,609],{"class":123},[88,1254,612],{"class":94},[88,1256,665],{"class":123},[88,1258,612],{"class":94},[88,1260,670],{"class":98},[88,1262,634],{"class":123},[88,1264,1265,1267,1269,1271,1273,1275,1277],{"class":90,"line":895},[88,1266,606],{"class":119},[88,1268,609],{"class":123},[88,1270,612],{"class":94},[88,1272,688],{"class":98},[88,1274,692],{"class":691},[88,1276,695],{"class":98},[88,1278,634],{"class":123},[88,1280,1281],{"class":90,"line":906},[88,1282,265],{"emptyLinePlaceholder":264},[88,1284,1286],{"class":90,"line":1285},29,[88,1287,1288],{"class":112},"    \u002F\u002F 子视图修改会影响原数据！\n",[88,1290,1292,1295,1298,1301,1303,1306],{"class":90,"line":1291},30,[88,1293,1294],{"class":123},"    mid[",[88,1296,1297],{"class":691},"0",[88,1299,1300],{"class":123},"] ",[88,1302,733],{"class":94},[88,1304,1305],{"class":691}," 999",[88,1307,634],{"class":123},[88,1309,1311,1313,1315,1317,1320,1322,1324],{"class":90,"line":1310},31,[88,1312,606],{"class":119},[88,1314,609],{"class":123},[88,1316,612],{"class":94},[88,1318,1319],{"class":98}," \"after modifying mid[0] = 999",[88,1321,692],{"class":691},[88,1323,695],{"class":98},[88,1325,634],{"class":123},[88,1327,1329,1331,1333,1335,1338,1340,1343,1345,1347,1349,1351,1353,1355],{"class":90,"line":1328},32,[88,1330,606],{"class":119},[88,1332,609],{"class":123},[88,1334,612],{"class":94},[88,1336,1337],{"class":98}," \"original vec[1] = \"",[88,1339,618],{"class":94},[88,1341,1342],{"class":123}," vec[",[88,1344,739],{"class":691},[88,1346,1300],{"class":123},[88,1348,612],{"class":94},[88,1350,688],{"class":98},[88,1352,692],{"class":691},[88,1354,695],{"class":98},[88,1356,634],{"class":123},[88,1358,1360],{"class":90,"line":1359},33,[88,1361,265],{"emptyLinePlaceholder":264},[88,1363,1365,1367,1369],{"class":90,"line":1364},34,[88,1366,898],{"class":94},[88,1368,901],{"class":691},[88,1370,634],{"class":123},[88,1372,1374],{"class":90,"line":1373},35,[88,1375,702],{"class":123},[16,1377,1378,914],{},[26,1379,913],{},[79,1381,1384],{"className":1382,"code":1383,"language":920},[918],"mid: 20 30 40 \nfirst 2: 10 20 \nlast 3: 40 50 60 \nafter modifying mid[0] = 999\noriginal vec[1] = 999\n",[30,1385,1383],{"__ignoreMap":84},[520,1387,1389],{"id":1388},"示例-3在示例-2-基础上写一个求和的函数","示例 3：在示例 2 基础上，写一个求和的函数",[79,1391,1393],{"className":81,"code":1392,"language":83,"meta":84,"style":84},"#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",[30,1394,1395,1401,1407,1413,1417,1422,1451,1455,1470,1481,1485,1496,1500,1507,1511,1515,1520,1547,1551,1571,1590,1594,1598,1606,1610,1651,1676,1680,1708,1735,1763,1790,1794,1802],{"__ignoreMap":84},[88,1396,1397,1399],{"class":90,"line":91},[88,1398,95],{"class":94},[88,1400,535],{"class":98},[88,1402,1403,1405],{"class":90,"line":116},[88,1404,95],{"class":94},[88,1406,99],{"class":98},[88,1408,1409,1411],{"class":90,"line":142},[88,1410,95],{"class":94},[88,1412,548],{"class":98},[88,1414,1415],{"class":90,"line":180},[88,1416,265],{"emptyLinePlaceholder":264},[88,1418,1419],{"class":90,"line":207},[88,1420,1421],{"class":112},"\u002F\u002F 计算 span 中所有元素的和\n",[88,1423,1424,1427,1430,1432,1434,1436,1438,1440,1442,1445,1447,1449],{"class":90,"line":234},[88,1425,1426],{"class":94},"double",[88,1428,1429],{"class":119}," sum",[88,1431,162],{"class":123},[88,1433,120],{"class":119},[88,1435,147],{"class":123},[88,1437,88],{"class":119},[88,1439,127],{"class":123},[88,1441,585],{"class":94},[88,1443,1444],{"class":94}," double",[88,1446,156],{"class":123},[88,1448,341],{"class":593},[88,1450,596],{"class":123},[88,1452,1453],{"class":90,"line":261},[88,1454,601],{"class":123},[88,1456,1457,1460,1463,1465,1468],{"class":90,"line":268},[88,1458,1459],{"class":94},"    double",[88,1461,1462],{"class":123}," total ",[88,1464,733],{"class":94},[88,1466,1467],{"class":691}," 0.0",[88,1469,634],{"class":123},[88,1471,1472,1474,1476,1478],{"class":90,"line":274},[88,1473,639],{"class":94},[88,1475,642],{"class":123},[88,1477,1426],{"class":94},[88,1479,1480],{"class":123}," x : data)\n",[88,1482,1483],{"class":90,"line":288},[88,1484,653],{"class":123},[88,1486,1487,1490,1493],{"class":90,"line":301},[88,1488,1489],{"class":123},"        total ",[88,1491,1492],{"class":94},"+=",[88,1494,1495],{"class":123}," x;\n",[88,1497,1498],{"class":90,"line":310},[88,1499,677],{"class":123},[88,1501,1502,1504],{"class":90,"line":323},[88,1503,898],{"class":94},[88,1505,1506],{"class":123}," total;\n",[88,1508,1509],{"class":90,"line":336},[88,1510,702],{"class":123},[88,1512,1513],{"class":90,"line":349},[88,1514,265],{"emptyLinePlaceholder":264},[88,1516,1517],{"class":90,"line":363},[88,1518,1519],{"class":112},"\u002F\u002F 计算 span 中所有元素的平均值\n",[88,1521,1522,1524,1527,1529,1531,1533,1535,1537,1539,1541,1543,1545],{"class":90,"line":377},[88,1523,1426],{"class":94},[88,1525,1526],{"class":119}," average",[88,1528,162],{"class":123},[88,1530,120],{"class":119},[88,1532,147],{"class":123},[88,1534,88],{"class":119},[88,1536,127],{"class":123},[88,1538,585],{"class":94},[88,1540,1444],{"class":94},[88,1542,156],{"class":123},[88,1544,341],{"class":593},[88,1546,596],{"class":123},[88,1548,1549],{"class":90,"line":719},[88,1550,601],{"class":123},[88,1552,1553,1556,1559,1561,1564,1567,1569],{"class":90,"line":724},[88,1554,1555],{"class":94},"    if",[88,1557,1558],{"class":123}," (data.",[88,1560,293],{"class":119},[88,1562,1563],{"class":123},"()) ",[88,1565,1566],{"class":94},"return",[88,1568,1467],{"class":691},[88,1570,634],{"class":123},[88,1572,1573,1575,1577,1580,1583,1585,1587],{"class":90,"line":768},[88,1574,898],{"class":94},[88,1576,1429],{"class":119},[88,1578,1579],{"class":123},"(data) ",[88,1581,1582],{"class":94},"\u002F",[88,1584,621],{"class":123},[88,1586,171],{"class":119},[88,1588,1589],{"class":123},"();\n",[88,1591,1592],{"class":90,"line":804},[88,1593,702],{"class":123},[88,1595,1596],{"class":90,"line":851},[88,1597,265],{"emptyLinePlaceholder":264},[88,1599,1600,1602,1604],{"class":90,"line":856},[88,1601,645],{"class":94},[88,1603,713],{"class":119},[88,1605,716],{"class":123},[88,1607,1608],{"class":90,"line":868},[88,1609,601],{"class":123},[88,1611,1612,1614,1616,1619,1622,1624,1626,1629,1631,1634,1636,1639,1641,1644,1646,1649],{"class":90,"line":879},[88,1613,606],{"class":119},[88,1615,773],{"class":123},[88,1617,1618],{"class":94},"\u003Cdouble>",[88,1620,1621],{"class":123}," scores ",[88,1623,733],{"class":94},[88,1625,736],{"class":123},[88,1627,1628],{"class":691},"85.5",[88,1630,168],{"class":123},[88,1632,1633],{"class":691},"92.0",[88,1635,168],{"class":123},[88,1637,1638],{"class":691},"78.5",[88,1640,168],{"class":123},[88,1642,1643],{"class":691},"90.0",[88,1645,168],{"class":123},[88,1647,1648],{"class":691},"88.0",[88,1650,1007],{"class":123},[88,1652,1653,1655,1657,1659,1661,1664,1666,1669,1671,1674],{"class":90,"line":890},[88,1654,1459],{"class":94},[88,1656,730],{"class":123},[88,1658,733],{"class":94},[88,1660,736],{"class":123},[88,1662,1663],{"class":691},"1.1",[88,1665,168],{"class":123},[88,1667,1668],{"class":691},"2.2",[88,1670,168],{"class":123},[88,1672,1673],{"class":691},"3.3",[88,1675,1007],{"class":123},[88,1677,1678],{"class":90,"line":895},[88,1679,265],{"emptyLinePlaceholder":264},[88,1681,1682,1684,1686,1688,1691,1693,1695,1698,1700,1702,1704,1706],{"class":90,"line":906},[88,1683,606],{"class":119},[88,1685,609],{"class":123},[88,1687,612],{"class":94},[88,1689,1690],{"class":98}," \"sum(scores) = \"",[88,1692,618],{"class":94},[88,1694,1429],{"class":119},[88,1696,1697],{"class":123},"(scores) ",[88,1699,612],{"class":94},[88,1701,688],{"class":98},[88,1703,692],{"class":691},[88,1705,695],{"class":98},[88,1707,634],{"class":123},[88,1709,1710,1712,1714,1716,1719,1721,1723,1725,1727,1729,1731,1733],{"class":90,"line":1285},[88,1711,606],{"class":119},[88,1713,609],{"class":123},[88,1715,612],{"class":94},[88,1717,1718],{"class":98}," \"avg(scores) = \"",[88,1720,618],{"class":94},[88,1722,1526],{"class":119},[88,1724,1697],{"class":123},[88,1726,612],{"class":94},[88,1728,688],{"class":98},[88,1730,692],{"class":691},[88,1732,695],{"class":98},[88,1734,634],{"class":123},[88,1736,1737,1739,1741,1743,1746,1748,1750,1753,1755,1757,1759,1761],{"class":90,"line":1291},[88,1738,606],{"class":119},[88,1740,609],{"class":123},[88,1742,612],{"class":94},[88,1744,1745],{"class":98}," \"sum(c_arr) = \"",[88,1747,618],{"class":94},[88,1749,1429],{"class":119},[88,1751,1752],{"class":123},"(c_arr) ",[88,1754,612],{"class":94},[88,1756,688],{"class":98},[88,1758,692],{"class":691},[88,1760,695],{"class":98},[88,1762,634],{"class":123},[88,1764,1765,1767,1769,1771,1774,1776,1778,1780,1782,1784,1786,1788],{"class":90,"line":1310},[88,1766,606],{"class":119},[88,1768,609],{"class":123},[88,1770,612],{"class":94},[88,1772,1773],{"class":98}," \"avg(c_arr) = \"",[88,1775,618],{"class":94},[88,1777,1526],{"class":119},[88,1779,1752],{"class":123},[88,1781,612],{"class":94},[88,1783,688],{"class":98},[88,1785,692],{"class":691},[88,1787,695],{"class":98},[88,1789,634],{"class":123},[88,1791,1792],{"class":90,"line":1328},[88,1793,265],{"emptyLinePlaceholder":264},[88,1795,1796,1798,1800],{"class":90,"line":1359},[88,1797,898],{"class":94},[88,1799,901],{"class":691},[88,1801,634],{"class":123},[88,1803,1804],{"class":90,"line":1364},[88,1805,702],{"class":123},[16,1807,1808,914],{},[26,1809,913],{},[79,1811,1814],{"className":1812,"code":1813,"language":920},[918],"sum(scores) = 434\navg(scores) = 86.8\nsum(c_arr) = 6.6\navg(c_arr) = 2.2\n",[30,1815,1813],{"__ignoreMap":84},[12,1817,913],{"id":913},[16,1819,1820],{},"见上方每个示例的\"运行结果\"。",[12,1822,1823],{"id":1823},"示例中的关键语法解释",[392,1825,1826,1845],{},[395,1827,1828],{},[398,1829,1830,1833,1836,1839,1842],{},[401,1831,1832],{"align":403},"示例",[401,1834,1835],{"align":403},"讲了什么",[401,1837,1838],{"align":403},"新出现的语法",[401,1840,1841],{"align":403},"为什么这样写",[401,1843,1844],{"align":403},"注意事项",[409,1846,1847,1867,1893],{},[398,1848,1849,1852,1855,1861,1864],{},[414,1850,1851],{"align":403},"示例 1",[414,1853,1854],{"align":403},"统一接收不同容器",[414,1856,1857,1860],{"align":403},[30,1858,1859],{},"std::span\u003Cconst int>"," 作为参数",[414,1862,1863],{"align":403},"一个函数处理 vector\u002Farray\u002FC 数组",[414,1865,1866],{"align":403},"span 只是视图，不拥有数据",[398,1868,1869,1872,1875,1887,1890],{},[414,1870,1871],{"align":403},"示例 2",[414,1873,1874],{"align":403},"子视图操作",[414,1876,1877,1880,1881,1880,1884],{"align":403},[30,1878,1879],{},"subspan()","、",[30,1882,1883],{},"first()",[30,1885,1886],{},"last()",[414,1888,1889],{"align":403},"零拷贝切片，可以局部处理大数组",[414,1891,1892],{"align":403},"子视图修改影响原数据",[398,1894,1895,1898,1901,1906,1909],{},[414,1896,1897],{"align":403},"示例 3",[414,1899,1900],{"align":403},"用 span 写通用函数",[414,1902,1903],{"align":403},[30,1904,1905],{},"sum(std::span\u003Cconst double>)",[414,1907,1908],{"align":403},"通用算法 + 任意连续容器",[414,1910,1911],{"align":403},"函数内部用 range-for 和 .size() 即可",[520,1913,1915],{"id":1914},"示例-4只读-span-和可写-span","示例 4：只读 span 和可写 span",[79,1917,1919],{"className":81,"code":1918,"language":83,"meta":84,"style":84},"#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",[30,1920,1921,1927,1933,1939,1943,1970,1974,1984,1988,2004,2008,2024,2028,2032,2064,2068,2079,2083,2093,2097,2101,2105,2113,2117,2122,2127,2154,2158,2166,2178,2184,2188,2196],{"__ignoreMap":84},[88,1922,1923,1925],{"class":90,"line":91},[88,1924,95],{"class":94},[88,1926,535],{"class":98},[88,1928,1929,1931],{"class":90,"line":116},[88,1930,95],{"class":94},[88,1932,99],{"class":98},[88,1934,1935,1937],{"class":90,"line":142},[88,1936,95],{"class":94},[88,1938,548],{"class":98},[88,1940,1941],{"class":90,"line":180},[88,1942,265],{"emptyLinePlaceholder":264},[88,1944,1945,1947,1950,1952,1954,1956,1958,1960,1962,1964,1966,1968],{"class":90,"line":207},[88,1946,569],{"class":94},[88,1948,1949],{"class":119}," print",[88,1951,162],{"class":123},[88,1953,120],{"class":119},[88,1955,147],{"class":123},[88,1957,88],{"class":119},[88,1959,127],{"class":123},[88,1961,585],{"class":94},[88,1963,588],{"class":94},[88,1965,156],{"class":123},[88,1967,341],{"class":593},[88,1969,596],{"class":123},[88,1971,1972],{"class":90,"line":234},[88,1973,601],{"class":123},[88,1975,1976,1978,1980,1982],{"class":90,"line":261},[88,1977,639],{"class":94},[88,1979,642],{"class":123},[88,1981,645],{"class":94},[88,1983,648],{"class":123},[88,1985,1986],{"class":90,"line":268},[88,1987,653],{"class":123},[88,1989,1990,1992,1994,1996,1998,2000,2002],{"class":90,"line":274},[88,1991,658],{"class":119},[88,1993,609],{"class":123},[88,1995,612],{"class":94},[88,1997,665],{"class":123},[88,1999,612],{"class":94},[88,2001,670],{"class":98},[88,2003,634],{"class":123},[88,2005,2006],{"class":90,"line":288},[88,2007,677],{"class":123},[88,2009,2010,2012,2014,2016,2018,2020,2022],{"class":90,"line":301},[88,2011,606],{"class":119},[88,2013,609],{"class":123},[88,2015,612],{"class":94},[88,2017,688],{"class":98},[88,2019,692],{"class":691},[88,2021,695],{"class":98},[88,2023,634],{"class":123},[88,2025,2026],{"class":90,"line":310},[88,2027,702],{"class":123},[88,2029,2030],{"class":90,"line":323},[88,2031,265],{"emptyLinePlaceholder":264},[88,2033,2034,2036,2039,2041,2043,2045,2047,2049,2051,2053,2055,2057,2059,2062],{"class":90,"line":336},[88,2035,569],{"class":94},[88,2037,2038],{"class":119}," add_offset",[88,2040,162],{"class":123},[88,2042,120],{"class":119},[88,2044,147],{"class":123},[88,2046,88],{"class":119},[88,2048,127],{"class":123},[88,2050,645],{"class":94},[88,2052,156],{"class":123},[88,2054,341],{"class":593},[88,2056,168],{"class":123},[88,2058,645],{"class":94},[88,2060,2061],{"class":593}," offset",[88,2063,596],{"class":123},[88,2065,2066],{"class":90,"line":349},[88,2067,601],{"class":123},[88,2069,2070,2072,2074,2077],{"class":90,"line":363},[88,2071,639],{"class":94},[88,2073,642],{"class":123},[88,2075,2076],{"class":94},"int&",[88,2078,648],{"class":123},[88,2080,2081],{"class":90,"line":377},[88,2082,653],{"class":123},[88,2084,2085,2088,2090],{"class":90,"line":719},[88,2086,2087],{"class":123},"        n ",[88,2089,1492],{"class":94},[88,2091,2092],{"class":123}," offset;\n",[88,2094,2095],{"class":90,"line":724},[88,2096,677],{"class":123},[88,2098,2099],{"class":90,"line":768},[88,2100,702],{"class":123},[88,2102,2103],{"class":90,"line":804},[88,2104,265],{"emptyLinePlaceholder":264},[88,2106,2107,2109,2111],{"class":90,"line":851},[88,2108,645],{"class":94},[88,2110,713],{"class":119},[88,2112,716],{"class":123},[88,2114,2115],{"class":90,"line":856},[88,2116,601],{"class":123},[88,2118,2119],{"class":90,"line":868},[88,2120,2121],{"class":112},"    \u002F\u002F 程序从 main 函数开始执行，下面的语句会按顺序运行。\n",[88,2123,2124],{"class":90,"line":879},[88,2125,2126],{"class":112},"    \u002F\u002F vector 是动态数组，元素数量可以在运行时变化。\n",[88,2128,2129,2131,2133,2135,2138,2140,2142,2144,2146,2148,2150,2152],{"class":90,"line":890},[88,2130,606],{"class":119},[88,2132,773],{"class":123},[88,2134,776],{"class":94},[88,2136,2137],{"class":123}," values ",[88,2139,733],{"class":94},[88,2141,736],{"class":123},[88,2143,786],{"class":691},[88,2145,168],{"class":123},[88,2147,791],{"class":691},[88,2149,168],{"class":123},[88,2151,796],{"class":691},[88,2153,1007],{"class":123},[88,2155,2156],{"class":90,"line":895},[88,2157,265],{"emptyLinePlaceholder":264},[88,2159,2160,2163],{"class":90,"line":906},[88,2161,2162],{"class":119},"    print",[88,2164,2165],{"class":123},"(values);\n",[88,2167,2168,2171,2174,2176],{"class":90,"line":1285},[88,2169,2170],{"class":119},"    add_offset",[88,2172,2173],{"class":123},"(values, ",[88,2175,759],{"class":691},[88,2177,1060],{"class":123},[88,2179,2180,2182],{"class":90,"line":1291},[88,2181,2162],{"class":119},[88,2183,2165],{"class":123},[88,2185,2186],{"class":90,"line":1310},[88,2187,265],{"emptyLinePlaceholder":264},[88,2189,2190,2192,2194],{"class":90,"line":1328},[88,2191,898],{"class":94},[88,2193,901],{"class":691},[88,2195,634],{"class":123},[88,2197,2198],{"class":90,"line":1359},[88,2199,702],{"class":123},[16,2201,2202,914],{},[26,2203,913],{},[79,2205,2208],{"className":2206,"code":2207,"language":920},[918],"10 20 30\n15 25 35\n",[30,2209,2207],{"__ignoreMap":84},[16,2211,2212,2215,2216,2219,2220,2223,2224,2227,2228,2231,2232,2234],{},[30,2213,2214],{},"print"," 只读，所以用 ",[30,2217,2218],{},"span\u003Cconst int>","；",[30,2221,2222],{},"add_offset"," 要原地修改，所以用 ",[30,2225,2226],{},"span\u003Cint>","。这比传 ",[30,2229,2230],{},"vector\u003Cint>&"," 更通用，因为它也可以接收 ",[30,2233,226],{}," 和 C 数组。",[12,2236,2237],{"id":2237},"常见错误",[16,2239,2240],{},[26,2241,2242],{},"错误 1：span 比它引用的数据活得久",[79,2244,2246],{"className":81,"code":2245,"language":83,"meta":84,"style":84},"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",[30,2247,2248,2267,2271,2298,2319],{"__ignoreMap":84},[88,2249,2250,2252,2254,2256,2258,2260,2262,2265],{"class":90,"line":91},[88,2251,120],{"class":119},[88,2253,147],{"class":123},[88,2255,88],{"class":119},[88,2257,127],{"class":123},[88,2259,645],{"class":94},[88,2261,156],{"class":123},[88,2263,2264],{"class":119},"make_span",[88,2266,716],{"class":123},[88,2268,2269],{"class":90,"line":116},[88,2270,601],{"class":123},[88,2272,2273,2275,2277,2279,2282,2284,2286,2288,2290,2292,2294,2296],{"class":90,"line":142},[88,2274,606],{"class":119},[88,2276,773],{"class":123},[88,2278,776],{"class":94},[88,2280,2281],{"class":123}," v ",[88,2283,733],{"class":94},[88,2285,736],{"class":123},[88,2287,739],{"class":691},[88,2289,168],{"class":123},[88,2291,744],{"class":691},[88,2293,168],{"class":123},[88,2295,749],{"class":691},[88,2297,1007],{"class":123},[88,2299,2300,2302,2305,2307,2309,2311,2313,2316],{"class":90,"line":180},[88,2301,898],{"class":94},[88,2303,2304],{"class":119}," std",[88,2306,147],{"class":123},[88,2308,88],{"class":119},[88,2310,127],{"class":123},[88,2312,645],{"class":94},[88,2314,2315],{"class":123},">(v);",[88,2317,2318],{"class":112},"  \u002F\u002F ❌ v 是局部变量，span 成为悬挂视图！\n",[88,2320,2321],{"class":90,"line":207},[88,2322,702],{"class":123},[16,2324,2325],{},"正确做法：span 只是视图，必须确保底层数据比 span 活得久。",[16,2327,2328],{},[26,2329,2330],{},"错误 2：用 span 接收临时对象",[79,2332,2334],{"className":81,"code":2333,"language":83,"meta":84,"style":84},"std::span\u003Cconst int> sp = std::vector\u003Cint>{1, 2, 3};  \u002F\u002F ❌ 临时对象已销毁！\n",[30,2335,2336],{"__ignoreMap":84},[88,2337,2338,2340,2342,2345,2348,2351,2353,2355,2357,2359,2362,2364,2366,2368,2370,2372,2374],{"class":90,"line":91},[88,2339,120],{"class":119},[88,2341,124],{"class":123},[88,2343,2344],{"class":94},"\u003Cconst",[88,2346,2347],{"class":94}," int>",[88,2349,2350],{"class":123}," sp ",[88,2352,733],{"class":94},[88,2354,2304],{"class":119},[88,2356,773],{"class":123},[88,2358,776],{"class":94},[88,2360,2361],{"class":123},"{",[88,2363,739],{"class":691},[88,2365,168],{"class":123},[88,2367,744],{"class":691},[88,2369,168],{"class":123},[88,2371,749],{"class":691},[88,2373,762],{"class":123},[88,2375,2376],{"class":112},"  \u002F\u002F ❌ 临时对象已销毁！\n",[16,2378,2379],{},"正确做法：先创建具名的容器，再传给 span。",[16,2381,2382],{},[26,2383,2384],{},"错误 3：认为 span 可以用于不连续容器",[79,2386,2388],{"className":81,"code":2387,"language":83,"meta":84,"style":84},"std::list\u003Cint> lst = {1, 2, 3};\nstd::span\u003Cint> sp(lst);  \u002F\u002F ❌ list 不连续！\n",[30,2389,2390,2418],{"__ignoreMap":84},[88,2391,2392,2394,2397,2399,2402,2404,2406,2408,2410,2412,2414,2416],{"class":90,"line":91},[88,2393,120],{"class":119},[88,2395,2396],{"class":123},"::list",[88,2398,776],{"class":94},[88,2400,2401],{"class":123}," lst ",[88,2403,733],{"class":94},[88,2405,736],{"class":123},[88,2407,739],{"class":691},[88,2409,168],{"class":123},[88,2411,744],{"class":691},[88,2413,168],{"class":123},[88,2415,749],{"class":691},[88,2417,1007],{"class":123},[88,2419,2420,2422,2424,2426,2428,2430,2432,2434,2436,2439,2441],{"class":90,"line":116},[88,2421,120],{"class":119},[88,2423,147],{"class":123},[88,2425,88],{"class":119},[88,2427,127],{"class":123},[88,2429,645],{"class":94},[88,2431,156],{"class":123},[88,2433,159],{"class":119},[88,2435,162],{"class":123},[88,2437,2438],{"class":119},"lst",[88,2440,174],{"class":123},[88,2442,2443],{"class":112},"  \u002F\u002F ❌ list 不连续！\n",[16,2445,2446],{},"正确做法：span 只适用于连续内存容器（vector、array、C 数组、deque 的部分场景）。",[12,2448,2449],{"id":2449},"使用建议",[20,2451,2452,2464,2470,2478,2488],{},[23,2453,2454,2459,2460,2463],{},[26,2455,2456,2457],{},"函数参数优先用 ",[30,2458,486],{},"：代替 ",[30,2461,2462],{},"const vector\u003CT>&","，更通用。",[23,2465,2466,2469],{},[26,2467,2468],{},"span 只是视图","：不拥有数据，必须确保底层数据存活。",[23,2471,2472,914,2475,2477],{},[26,2473,2474],{},"子视图零拷贝",[30,2476,354],{}," 等操作非常高效。",[23,2479,2480,2483,2484,2487],{},[26,2481,2482],{},"C++20 才有 span","：如果你的项目用 C++17，可以用 ",[30,2485,2486],{},"std::string_view","（字符串版的 span）或第三方库。",[23,2489,2490,2495],{},[26,2491,2492,2493],{},"只读参数优先 ",[30,2494,457],{},"：这样 vector、array、C 数组都能传，而且不会被函数修改。",[12,2497,2498],{"id":2498},"小结",[2500,2501,2502,2507,2510,2520,2523],"ul",{},[23,2503,2504,2506],{},[30,2505,58],{}," 是不拥有数据的连续内存视图。",[23,2508,2509],{},"可以统一接收 vector、array、C 数组——一个参数类型覆盖所有。",[23,2511,2512,2513,1880,2515,1880,2517,2519],{},"支持子视图切片（",[30,2514,354],{},[30,2516,368],{},[30,2518,382],{},"），零拷贝。",[23,2521,2522],{},"span 的生命周期不能超过底层数据。",[23,2524,2525],{},"只适用于连续内存容器。",[2527,2528,2529],"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":84,"searchDepth":116,"depth":116,"links":2531},[2532,2533,2534,2535,2536,2537,2538,2540,2545,2546,2549,2550,2551],{"id":14,"depth":116,"text":14},{"id":53,"depth":116,"text":53},{"id":70,"depth":116,"text":71},{"id":77,"depth":116,"text":77},{"id":102,"depth":116,"text":102},{"id":390,"depth":116,"text":390},{"id":454,"depth":116,"text":2539},"span\u003Cconst T> 和 span\u003CT> 的区别",{"id":518,"depth":116,"text":518,"children":2541},[2542,2543,2544],{"id":522,"depth":142,"text":523},{"id":925,"depth":142,"text":926},{"id":1388,"depth":142,"text":1389},{"id":913,"depth":116,"text":913},{"id":1823,"depth":116,"text":1823,"children":2547},[2548],{"id":1914,"depth":142,"text":1915},{"id":2237,"depth":116,"text":2237},{"id":2449,"depth":116,"text":2449},{"id":2498,"depth":116,"text":2498},"2000-1600","2023-10-05","2023-10-05-cplusplus-jiao-xue","\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue","Cplusplus教学","md",false,{},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1600-std-span",{"title":5,"description":84},"wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1600-std-span","oy33S7WG7GSDhQzzQara2XlqkysDNPtnPr5ptwbm5gU",[2565,2572,2578,2584,2590,2596,2602,2608,2614,2620,2626,2632,2638,2644,2650,2656,2662,2668,2674,2680,2686,2692,2698,2704,2710,2716,2722,2728,2734,2740,2746,2752,2758,2764,2770,2776,2782,2788,2794,2800,2806,2812,2818,2824,2830,2836,2842,2848,2854,2860,2866,2872,2878,2884,2890,2892,2898,2904,2910,2916,2922,2928,2934,2940,2946,2952,2958,2964,2970,2976,2982,2988,2994,3000,3006,3012,3018,3024,3030,3036,3042,3048,3054,3060,3066,3072,3078,3084,3090,3096,3102,3108],{"path":2566,"stem":2567,"title":2568,"authors":2569,"date":2553,"chapterOrder":2570,"chapterDepth":2571,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0100-c-kai-fa-huan-jing-da-jian-yu-ce-shi","wiki\u002F2023-10-05-Cplusplus教学\u002F0100-C++开发环境搭建与测试","C++开发环境搭建与测试",[7],"0100",0,{"path":2573,"stem":2574,"title":2575,"authors":2576,"date":2553,"chapterOrder":2577,"chapterDepth":2571,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0200-c-ji-chu-chu-shi","wiki\u002F2023-10-05-Cplusplus教学\u002F0200-C++基础初识","C++基础初识",[7],"0200",{"path":2579,"stem":2580,"title":2581,"authors":2582,"date":2553,"chapterOrder":2583,"chapterDepth":2571,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0300-shu-ju-lei-xing-yu-shu-ju-cun-fang","wiki\u002F2023-10-05-Cplusplus教学\u002F0300-数据类型与数据存放","数据类型与数据存放",[7],"0300",{"path":2585,"stem":2586,"title":2587,"authors":2588,"date":2553,"chapterOrder":2589,"chapterDepth":2571,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0400-shu-ru-shu-chu","wiki\u002F2023-10-05-Cplusplus教学\u002F0400-输入输出","输入输出",[7],"0400",{"path":2591,"stem":2592,"title":2593,"authors":2594,"date":2553,"chapterOrder":2595,"chapterDepth":2571,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0500-yun-suan-fu","wiki\u002F2023-10-05-Cplusplus教学\u002F0500-运算符","运算符",[7],"0500",{"path":2597,"stem":2598,"title":2599,"authors":2600,"date":2553,"chapterOrder":2601,"chapterDepth":2571,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0600-cheng-xu-liu-cheng-jie-gou","wiki\u002F2023-10-05-Cplusplus教学\u002F0600-程序流程结构","程序流程结构",[7],"0600",{"path":2603,"stem":2604,"title":2605,"authors":2606,"date":2553,"chapterOrder":2607,"chapterDepth":2571,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0700-shu-zu","wiki\u002F2023-10-05-Cplusplus教学\u002F0700-数组","数组",[7],"0700",{"path":2609,"stem":2610,"title":2611,"authors":2612,"date":2553,"chapterOrder":2613,"chapterDepth":2571,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0800-han-shu-yu-tou-wen-jian","wiki\u002F2023-10-05-Cplusplus教学\u002F0800-函数与头文件","函数与头文件",[7],"0800",{"path":2615,"stem":2616,"title":2617,"authors":2618,"date":2553,"chapterOrder":2619,"chapterDepth":2571,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0900-zhi-zhen","wiki\u002F2023-10-05-Cplusplus教学\u002F0900-指针","指针",[7],"0900",{"path":2621,"stem":2622,"title":2623,"authors":2624,"date":2553,"chapterOrder":2625,"chapterDepth":2571,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1000-jie-gou-ti-yu-gong-yong-ti","wiki\u002F2023-10-05-Cplusplus教学\u002F1000-结构体与共用体","结构体与共用体",[7],"1000",{"path":2627,"stem":2628,"title":2629,"authors":2630,"date":2553,"chapterOrder":2631,"chapterDepth":2571,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1100-nei-cun-fen-qu-yu-sheng-ming-zhou-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1100-内存分区与生命周期","内存分区与生命周期",[7],"1100",{"path":2633,"stem":2634,"title":2635,"authors":2636,"date":2553,"chapterOrder":2637,"chapterDepth":2571,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1200-yin-yong","wiki\u002F2023-10-05-Cplusplus教学\u002F1200-引用","引用",[7],"1200",{"path":2639,"stem":2640,"title":2641,"authors":2642,"date":2553,"chapterOrder":2643,"chapterDepth":2571,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1300-han-shu-ti-gao","wiki\u002F2023-10-05-Cplusplus教学\u002F1300-函数提高","函数提高",[7],"1300",{"path":2645,"stem":2646,"title":2647,"authors":2648,"date":2553,"chapterOrder":2649,"chapterDepth":2571,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1350-ming-ming-kong-jian","wiki\u002F2023-10-05-Cplusplus教学\u002F1350-命名空间","命名空间",[7],"1350",{"path":2651,"stem":2652,"title":2653,"authors":2654,"date":2553,"chapterOrder":2655,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0100-feng-zhuang","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0100-封装","封装",[7],"1400-0100",{"path":2657,"stem":2658,"title":2659,"authors":2660,"date":2553,"chapterOrder":2661,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0200-dui-xiang-chu-shi-hua-he-qing-li","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0200-对象初始化和清理","对象初始化和清理",[7],"1400-0200",{"path":2663,"stem":2664,"title":2665,"authors":2666,"date":2553,"chapterOrder":2667,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0300-dui-xiang-mo-xing-yu-this-zhi-zhen","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0300-对象模型与this指针","对象模型与this指针",[7],"1400-0300",{"path":2669,"stem":2670,"title":2671,"authors":2672,"date":2553,"chapterOrder":2673,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0400-you-yuan-yu-yun-suan-fu-zhong-zai","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0400-友元与运算符重载","友元与运算符重载",[7],"1400-0400",{"path":2675,"stem":2676,"title":2677,"authors":2678,"date":2553,"chapterOrder":2679,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0500-ji-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0500-继承","继承",[7],"1400-0500",{"path":2681,"stem":2682,"title":2683,"authors":2684,"date":2553,"chapterOrder":2685,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0600-duo-tai","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0600-多态","多态",[7],"1400-0600",{"path":2687,"stem":2688,"title":2689,"authors":2690,"date":2553,"chapterOrder":2691,"chapterDepth":2571,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-lei-he-dui-xiang","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-类和对象","类和对象",[7],"1400",{"path":2693,"stem":2694,"title":2695,"authors":2696,"date":2553,"chapterOrder":2697,"chapterDepth":2571,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1450-han-shu-zhi-zhen","wiki\u002F2023-10-05-Cplusplus教学\u002F1450-函数指针","函数指针",[7],"1450",{"path":2699,"stem":2700,"title":2701,"authors":2702,"date":2553,"chapterOrder":2703,"chapterDepth":2571,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1500-wen-jian-cao-zuo","wiki\u002F2023-10-05-Cplusplus教学\u002F1500-文件操作","文件操作",[7],"1500",{"path":2705,"stem":2706,"title":2707,"authors":2708,"date":2553,"chapterOrder":2709,"chapterDepth":2571,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1600-yi-chang-chu-li-yu-cuo-wu-ma","wiki\u002F2023-10-05-Cplusplus教学\u002F1600-异常处理与错误码","异常处理",[7],"1600",{"path":2711,"stem":2712,"title":2713,"authors":2714,"date":2553,"chapterOrder":2715,"chapterDepth":2571,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1700-mu-ban","wiki\u002F2023-10-05-Cplusplus教学\u002F1700-模板","模板",[7],"1700",{"path":2717,"stem":2718,"title":2719,"authors":2720,"date":2553,"chapterOrder":2721,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0100-stl-chu-shi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0100-STL初识","STL初识",[7],"1800-0100",{"path":2723,"stem":2724,"title":2725,"authors":2726,"date":2553,"chapterOrder":2727,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0200-std-array","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0200-std-array","std::array",[7],"1800-0200",{"path":2729,"stem":2730,"title":2731,"authors":2732,"date":2553,"chapterOrder":2733,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0300-string-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0300-string容器","string容器",[7],"1800-0300",{"path":2735,"stem":2736,"title":2737,"authors":2738,"date":2553,"chapterOrder":2739,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0400-vector-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0400-vector容器","vector 容器",[7],"1800-0400",{"path":2741,"stem":2742,"title":2743,"authors":2744,"date":2553,"chapterOrder":2745,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0500-deque-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0500-deque容器","deque 容器",[7],"1800-0500",{"path":2747,"stem":2748,"title":2749,"authors":2750,"date":2553,"chapterOrder":2751,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0600-stack-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0600-stack容器","stack 容器",[7],"1800-0600",{"path":2753,"stem":2754,"title":2755,"authors":2756,"date":2553,"chapterOrder":2757,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0700-queue-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0700-queue容器","queue 容器",[7],"1800-0700",{"path":2759,"stem":2760,"title":2761,"authors":2762,"date":2553,"chapterOrder":2763,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0800-list-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0800-list容器","list 容器",[7],"1800-0800",{"path":2765,"stem":2766,"title":2767,"authors":2768,"date":2553,"chapterOrder":2769,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0900-set-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0900-set容器","set \u002F multiset 容器",[7],"1800-0900",{"path":2771,"stem":2772,"title":2773,"authors":2774,"date":2553,"chapterOrder":2775,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1000-map-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-1000-map容器","map \u002F multimap 容器",[7],"1800-1000",{"path":2777,"stem":2778,"title":2779,"authors":2780,"date":2553,"chapterOrder":2781,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1100-han-shu-dui-xiang-yu-wei-ci","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-1100-函数对象与谓词","函数对象与谓词",[7],"1800-1100",{"path":2783,"stem":2784,"title":2785,"authors":2786,"date":2553,"chapterOrder":2787,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1200-chang-yong-suan-fa","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-1200-常用算法","常用算法",[7],"1800-1200",{"path":2789,"stem":2790,"title":2791,"authors":2792,"date":2553,"chapterOrder":2793,"chapterDepth":2571,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-stl-ti-gao-bian-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-STL提高编程","STL提高编程",[7],"1800",{"path":2795,"stem":2796,"title":2797,"authors":2798,"date":2553,"chapterOrder":2799,"chapterDepth":2571,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1900-c-lei-xing-zhuan-huan","wiki\u002F2023-10-05-Cplusplus教学\u002F1900-C++类型转换","C++类型转换",[7],"1900",{"path":2801,"stem":2802,"title":2803,"authors":2804,"date":2553,"chapterOrder":2805,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0100-auto","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0100-auto","auto",[7],"2000-0100",{"path":2807,"stem":2808,"title":2809,"authors":2810,"date":2553,"chapterOrder":2811,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0200-nullptr","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0200-nullptr","nullptr",[7],"2000-0200",{"path":2813,"stem":2814,"title":2815,"authors":2816,"date":2553,"chapterOrder":2817,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0300-using","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0300-using","using",[7],"2000-0300",{"path":2819,"stem":2820,"title":2821,"authors":2822,"date":2553,"chapterOrder":2823,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0400-enum-class","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0400-enum-class","enum class",[7],"2000-0400",{"path":2825,"stem":2826,"title":2827,"authors":2828,"date":2553,"chapterOrder":2829,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0500-fan-wei-for-xun-huan","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0500-范围for循环","范围 for 循环",[7],"2000-0500",{"path":2831,"stem":2832,"title":2833,"authors":2834,"date":2553,"chapterOrder":2835,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0600-jie-gou-hua-bang-ding","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0600-结构化绑定","结构化绑定",[7],"2000-0600",{"path":2837,"stem":2838,"title":2839,"authors":2840,"date":2553,"chapterOrder":2841,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0700-constexpr","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0700-constexpr","constexpr",[7],"2000-0700",{"path":2843,"stem":2844,"title":2845,"authors":2846,"date":2553,"chapterOrder":2847,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0800-raii","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0800-RAII","RAII",[7],"2000-0800",{"path":2849,"stem":2850,"title":2851,"authors":2852,"date":2553,"chapterOrder":2853,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0900-zhi-neng-zhi-zhen","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0900-智能指针","智能指针",[7],"2000-0900",{"path":2855,"stem":2856,"title":2857,"authors":2858,"date":2553,"chapterOrder":2859,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1000-you-zhi-yin-yong-he-yi-dong-yu-yi","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1000-右值引用和移动语义","右值引用和移动语义",[7],"2000-1000",{"path":2861,"stem":2862,"title":2863,"authors":2864,"date":2553,"chapterOrder":2865,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1100-lambda-biao-da-shi","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1100-Lambda表达式","Lambda 表达式",[7],"2000-1100",{"path":2867,"stem":2868,"title":2869,"authors":2870,"date":2553,"chapterOrder":2871,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1200-std-function","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1200-std-function","std::function",[7],"2000-1200",{"path":2873,"stem":2874,"title":2875,"authors":2876,"date":2553,"chapterOrder":2877,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1300-std-bind","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1300-std-bind","std::bind",[7],"2000-1300",{"path":2879,"stem":2880,"title":2881,"authors":2882,"date":2553,"chapterOrder":2883,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1400-std-optional","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1400-std-optional","std::optional",[7],"2000-1400",{"path":2885,"stem":2886,"title":2887,"authors":2888,"date":2553,"chapterOrder":2889,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1500-std-variant","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1500-std-variant","std::variant",[7],"2000-1500",{"path":2560,"stem":2562,"title":5,"authors":2891,"date":2553,"chapterOrder":2552,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},[7],{"path":2893,"stem":2894,"title":2895,"authors":2896,"date":2553,"chapterOrder":2897,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1700-std-format-print","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1700-std-format-print","std::format \u002F std::print",[7],"2000-1700",{"path":2899,"stem":2900,"title":2901,"authors":2902,"date":2553,"chapterOrder":2903,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1800-std-chrono","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1800-std-chrono","std::chrono",[7],"2000-1800",{"path":2905,"stem":2906,"title":2907,"authors":2908,"date":2553,"chapterOrder":2909,"chapterDepth":116,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0100-bing-fa-shi-shen-me","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0100-并发是什么","并发是什么",[7],"2000-1900-0100",{"path":2911,"stem":2912,"title":2913,"authors":2914,"date":2553,"chapterOrder":2915,"chapterDepth":116,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0200-bing-xing-shi-shen-me","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0200-并行是什么","并行是什么",[7],"2000-1900-0200",{"path":2917,"stem":2918,"title":2919,"authors":2920,"date":2553,"chapterOrder":2921,"chapterDepth":116,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0300-xie-cheng-shi-shen-me","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0300-协程是什么","协程是什么",[7],"2000-1900-0300",{"path":2923,"stem":2924,"title":2925,"authors":2926,"date":2553,"chapterOrder":2927,"chapterDepth":116,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-1000-bing-fa-bian-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-1000-并发编程","并发编程",[7],"2000-1900-1000",{"path":2929,"stem":2930,"title":2931,"authors":2932,"date":2553,"chapterOrder":2933,"chapterDepth":116,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-1100-std-thread","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-1100-std-thread","std::thread",[7],"2000-1900-1100",{"path":2935,"stem":2936,"title":2937,"authors":2938,"date":2553,"chapterOrder":2939,"chapterDepth":116,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-1200-mutex-lock-guard","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-1200-mutex-lock-guard","mutex 与 RAII 锁",[7],"2000-1900-1200",{"path":2941,"stem":2942,"title":2943,"authors":2944,"date":2553,"chapterOrder":2945,"chapterDepth":116,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-1300-std-atomic","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-1300-std-atomic","std::atomic",[7],"2000-1900-1300",{"path":2947,"stem":2948,"title":2949,"authors":2950,"date":2553,"chapterOrder":2951,"chapterDepth":116,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-1400-condition-variable","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-1400-condition-variable","condition_variable",[7],"2000-1900-1400",{"path":2953,"stem":2954,"title":2955,"authors":2956,"date":2553,"chapterOrder":2957,"chapterDepth":116,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-1500-future-async-promise","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-1500-future-async-promise","future、async、promise 与 packaged_task",[7],"2000-1900-1500",{"path":2959,"stem":2960,"title":2961,"authors":2962,"date":2553,"chapterOrder":2963,"chapterDepth":116,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-1600-jthread-stop-token","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-1600-jthread-stop-token","jthread 与 stop_token",[7],"2000-1900-1600",{"path":2965,"stem":2966,"title":2967,"authors":2968,"date":2553,"chapterOrder":2969,"chapterDepth":116,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-1700-semaphore-latch-barrier","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-1700-semaphore-latch-barrier","semaphore、latch 与 barrier",[7],"2000-1900-1700",{"path":2971,"stem":2972,"title":2973,"authors":2974,"date":2553,"chapterOrder":2975,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-bing-fa-bing-xing-yu-xie-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-并发并行与协程","并发、并行与协程",[7],"2000-1900",{"path":2977,"stem":2978,"title":2979,"authors":2980,"date":2553,"chapterOrder":2981,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2000-std-filesystem","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-2000-std-filesystem","std::filesystem",[7],"2000-2000",{"path":2983,"stem":2984,"title":2985,"authors":2986,"date":2553,"chapterOrder":2987,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2100-modules-jian-jie","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-2100-modules简介","modules 简介",[7],"2000-2100",{"path":2989,"stem":2990,"title":2991,"authors":2992,"date":2553,"chapterOrder":2993,"chapterDepth":2571,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-xian-dai-c","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-现代C++","现代C++",[7],"2000",{"path":2995,"stem":2996,"title":2997,"authors":2998,"date":2553,"chapterOrder":2999,"chapterDepth":116,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0100-ding-shi-qi-yu-yi-bu-io","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0100-定时器与异步IO","定时器与异步 IO",[7],"2100-0100-0100",{"path":3001,"stem":3002,"title":3003,"authors":3004,"date":2553,"chapterOrder":3005,"chapterDepth":116,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0200-boost-asio-ji-chu","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0200-Boost.Asio基础","Boost.Asio 基础",[7],"2100-0100-0200",{"path":3007,"stem":3008,"title":3009,"authors":3010,"date":2553,"chapterOrder":3011,"chapterDepth":116,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0300-chuan-kou-tong-xin","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0300-串口通信","串口通信教学",[7],"2100-0100-0300",{"path":3013,"stem":3014,"title":3015,"authors":3016,"date":2553,"chapterOrder":3017,"chapterDepth":116,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0350-chuan-kou-tong-xin-chuan-kou-bao-xie-yi-shi-li","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0350-串口通信串口包协议实例","串口通信串口包协议实例",[7],"2100-0100-0350",{"path":3019,"stem":3020,"title":3021,"authors":3022,"date":2553,"chapterOrder":3023,"chapterDepth":116,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0400-tcp-tong-xin","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0400-TCP通信","TCP 通信",[7],"2100-0100-0400",{"path":3025,"stem":3026,"title":3027,"authors":3028,"date":2553,"chapterOrder":3029,"chapterDepth":116,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0500-udp-tong-xin","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0500-UDP通信","UDP 通信",[7],"2100-0100-0500",{"path":3031,"stem":3032,"title":3033,"authors":3034,"date":2553,"chapterOrder":3035,"chapterDepth":116,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0600-ji-qi-ren-gong-cheng-xie-fa-yu-ros2-ji-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0600-机器人工程写法与ROS2集成","机器人工程写法与 ROS2 集成",[7],"2100-0100-0600",{"path":3037,"stem":3038,"title":3039,"authors":3040,"date":2553,"chapterOrder":3041,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-boost-asio-yi-bu-io-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-Boost.Asio异步IO库","Boost.Asio异步IO库",[7],"2100-0100",{"path":3043,"stem":3044,"title":3045,"authors":3046,"date":2553,"chapterOrder":3047,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0200-eigen-xian-xing-dai-shu-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0200-Eigen线性代数库","Eigen线性代数库",[7],"2100-0200",{"path":3049,"stem":3050,"title":3051,"authors":3052,"date":2553,"chapterOrder":3053,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0300-opencv-ji-suan-ji-shi-jue-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0300-OpenCV计算机视觉库","OpenCV计算机视觉库",[7],"2100-0300",{"path":3055,"stem":3056,"title":3057,"authors":3058,"date":2553,"chapterOrder":3059,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0400-pcl-dian-yun-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0400-PCL点云库","PCL点云库",[7],"2100-0400",{"path":3061,"stem":3062,"title":3063,"authors":3064,"date":2553,"chapterOrder":3065,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0500-sophus-li-qun-li-dai-shu-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0500-Sophus李群李代数库","Sophus 李群李代数库",[7],"2100-0500",{"path":3067,"stem":3068,"title":3069,"authors":3070,"date":2553,"chapterOrder":3071,"chapterDepth":2571,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-chang-yong-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-常用库","常用库学习",[7],"2100",{"path":3073,"stem":3074,"title":3075,"authors":3076,"date":2553,"chapterOrder":3077,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0100-cmakepresets-yu-gou-jian-an-zhuang","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0100-CMakePresets与构建安装","CMakePresets与构建安装",[7],"2200-0100",{"path":3079,"stem":3080,"title":3081,"authors":3082,"date":2553,"chapterOrder":3083,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0200-ding-ceng-cmake-yu-gong-gong-bian-yi-xuan-xiang","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0200-顶层CMake与公共编译选项","顶层CMake与公共编译选项",[7],"2200-0200",{"path":3085,"stem":3086,"title":3087,"authors":3088,"date":2553,"chapterOrder":3089,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0300-src-yu-lib-mo-kuai-cmake-xiang-jie","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0300-src与lib模块CMake详解","src与lib模块CMake详解",[7],"2200-0300",{"path":3091,"stem":3092,"title":3093,"authors":3094,"date":2553,"chapterOrder":3095,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0400-di-san-fang-ku-yi-lai-xie-fa","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0400-第三方库依赖写法","第三方库依赖写法",[7],"2200-0400",{"path":3097,"stem":3098,"title":3099,"authors":3100,"date":2553,"chapterOrder":3101,"chapterDepth":91,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0500-mu-ban-kuo-zhan-yu-chang-jian-wen-ti","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0500-模板扩展与常见问题","模板扩展与常见问题",[7],"2200-0500",{"path":3103,"stem":3104,"title":3105,"authors":3106,"date":2553,"chapterOrder":3107,"chapterDepth":2571,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":2558},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-cmake-gong-cheng-mu-ban","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-CMake工程模板","CMake工程模板",[7],"2200",{"path":2555,"stem":3109,"title":3110,"authors":3111,"date":2553,"chapterOrder":3112,"chapterDepth":2571,"docKey":2554,"docRoot":2555,"docTitle":2556,"isWikiDoc":264,"isWikiIndex":264},"wiki\u002F2023-10-05-Cplusplus教学\u002Findex","C\u002FC++教程",[7],null,[3114,3116,3119,3122],{"name":7,"image":3115},"\u002Fimages\u002Fmember_photo\u002F董佳辉.jpg",{"name":3117,"image":3118},"宫金良","\u002Fimages\u002Fmember_photo\u002F宫金良.jpg",{"name":3120,"image":3121},"巩丽","\u002Fimages\u002Fmember_photo\u002F巩丽.png",{"name":3123,"image":3124},"张彦斐","\u002Fimages\u002Fmember_photo\u002F张彦斐.jpg",1792431898677]