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