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