[{"data":1,"prerenderedAt":1388},["ShallowReactive",2],{"wiki-page-\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0300-std-atomic":3,"wiki-doc-items-\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0300-std-atomic":966,"language-switcher-data-\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0300-std-atomic":1372,"wiki-i18n-paths-\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0300-std-atomic":1387},{"id":4,"title":5,"body":6,"canonicalPath":949,"chapterDepth":68,"chapterOrder":950,"date":951,"description":50,"docI18nKey":952,"docKey":953,"docRoot":954,"docTitle":955,"extension":956,"i18nKey":957,"isBlogPost":958,"isWikiDoc":95,"isWikiIndex":958,"layout":959,"legacyPath":960,"locale":961,"localeSlug":962,"meta":963,"navigation":95,"path":949,"seo":964,"sourcePath":960,"sourceStem":957,"stem":957,"wikiDepth":57,"__hash__":965},"content\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0300-std-atomic.md","std::atomic",{"type":7,"value":8,"toc":939},"minimark",[9,13,26,36,39,44,463,470,478,482,485,801,806,812,816,885,888,910,913,935],[10,11,12],"h2",{"id":12},"本节解决什么问题",[14,15,16,17,21,22,25],"p",{},"如果共享数据只是一个简单计数器，可以用 ",[18,19,20],"code",{},"std::atomic\u003Cint>","。它能保证 ",[18,23,24],{},"++counter"," 这样的操作是线程安全的，不需要手动加锁。",[14,27,28,31,32,35],{},[18,29,30],{},"atomic"," 适合简单独立的原子操作。多个变量需要保持一致，或者需要执行复杂逻辑时，仍然应该使用 ",[18,33,34],{},"mutex","。",[10,37,38],{"id":38},"示例代码",[40,41,43],"h3",{"id":42},"示例-1用-atomic-实现线程安全计数","示例 1：用 atomic 实现线程安全计数",[45,46,51],"pre",{"className":47,"code":48,"language":49,"meta":50,"style":50},"language-cpp shiki shiki-themes github-light github-dark","#include \u003Catomic>\n#include \u003Ciostream>\n#include \u003Cthread>\n#include \u003Cvector>\n\n\u002F\u002F atomic 提供原子操作，适合简单的跨线程共享状态。\nstd::atomic\u003Cint> counter{0};\n\nvoid add_many(int times)\n{\n    for (int i = 0; i \u003C times; ++i)\n    {\n        ++counter;\n    }\n}\n\nint main()\n{\n    \u002F\u002F 程序从 main 函数开始执行，下面的语句会按顺序运行。\n    \u002F\u002F vector 是动态数组，元素数量可以在运行时变化。\n    std::vector\u003Cstd::thread> threads;\n\n    for (int i = 0; i \u003C 4; ++i)\n    {\n        threads.emplace_back(add_many, 100000);\n    }\n\n    for (auto& thread : threads)\n    {\n        \u002F\u002F join 会等待子线程结束，避免 main 提前退出。\n        thread.join();\n    }\n\n    std::cout \u003C\u003C \"counter = \" \u003C\u003C counter \u003C\u003C \"\\n\";\n    std::cout \u003C\u003C \"expected = 400000\\n\";\n\n    return 0;\n}\n","cpp","",[18,52,53,66,74,82,90,97,104,128,133,155,161,196,202,211,217,223,228,239,244,250,256,278,283,312,317,335,340,345,358,363,369,381,386,391,425,443,448,458],{"__ignoreMap":50},[54,55,58,62],"span",{"class":56,"line":57},"line",1,[54,59,61],{"class":60},"szBVR","#include",[54,63,65],{"class":64},"sZZnC"," \u003Catomic>\n",[54,67,69,71],{"class":56,"line":68},2,[54,70,61],{"class":60},[54,72,73],{"class":64}," \u003Ciostream>\n",[54,75,77,79],{"class":56,"line":76},3,[54,78,61],{"class":60},[54,80,81],{"class":64}," \u003Cthread>\n",[54,83,85,87],{"class":56,"line":84},4,[54,86,61],{"class":60},[54,88,89],{"class":64}," \u003Cvector>\n",[54,91,93],{"class":56,"line":92},5,[54,94,96],{"emptyLinePlaceholder":95},true,"\n",[54,98,100],{"class":56,"line":99},6,[54,101,103],{"class":102},"sJ8bj","\u002F\u002F atomic 提供原子操作，适合简单的跨线程共享状态。\n",[54,105,107,111,115,118,121,125],{"class":56,"line":106},7,[54,108,110],{"class":109},"sScJk","std",[54,112,114],{"class":113},"sVt8B","::atomic",[54,116,117],{"class":60},"\u003Cint>",[54,119,120],{"class":113}," counter{",[54,122,124],{"class":123},"sj4cs","0",[54,126,127],{"class":113},"};\n",[54,129,131],{"class":56,"line":130},8,[54,132,96],{"emptyLinePlaceholder":95},[54,134,136,139,142,145,148,152],{"class":56,"line":135},9,[54,137,138],{"class":60},"void",[54,140,141],{"class":109}," add_many",[54,143,144],{"class":113},"(",[54,146,147],{"class":60},"int",[54,149,151],{"class":150},"s4XuR"," times",[54,153,154],{"class":113},")\n",[54,156,158],{"class":56,"line":157},10,[54,159,160],{"class":113},"{\n",[54,162,164,167,170,172,175,178,181,184,187,190,193],{"class":56,"line":163},11,[54,165,166],{"class":60},"    for",[54,168,169],{"class":113}," (",[54,171,147],{"class":60},[54,173,174],{"class":113}," i ",[54,176,177],{"class":60},"=",[54,179,180],{"class":123}," 0",[54,182,183],{"class":113},"; i ",[54,185,186],{"class":60},"\u003C",[54,188,189],{"class":113}," times; ",[54,191,192],{"class":60},"++",[54,194,195],{"class":113},"i)\n",[54,197,199],{"class":56,"line":198},12,[54,200,201],{"class":113},"    {\n",[54,203,205,208],{"class":56,"line":204},13,[54,206,207],{"class":60},"        ++",[54,209,210],{"class":113},"counter;\n",[54,212,214],{"class":56,"line":213},14,[54,215,216],{"class":113},"    }\n",[54,218,220],{"class":56,"line":219},15,[54,221,222],{"class":113},"}\n",[54,224,226],{"class":56,"line":225},16,[54,227,96],{"emptyLinePlaceholder":95},[54,229,231,233,236],{"class":56,"line":230},17,[54,232,147],{"class":60},[54,234,235],{"class":109}," main",[54,237,238],{"class":113},"()\n",[54,240,242],{"class":56,"line":241},18,[54,243,160],{"class":113},[54,245,247],{"class":56,"line":246},19,[54,248,249],{"class":102},"    \u002F\u002F 程序从 main 函数开始执行，下面的语句会按顺序运行。\n",[54,251,253],{"class":56,"line":252},20,[54,254,255],{"class":102},"    \u002F\u002F vector 是动态数组，元素数量可以在运行时变化。\n",[54,257,259,262,265,267,269,272,275],{"class":56,"line":258},21,[54,260,261],{"class":109},"    std",[54,263,264],{"class":113},"::vector",[54,266,186],{"class":60},[54,268,110],{"class":109},[54,270,271],{"class":113},"::thread",[54,273,274],{"class":60},">",[54,276,277],{"class":113}," threads;\n",[54,279,281],{"class":56,"line":280},22,[54,282,96],{"emptyLinePlaceholder":95},[54,284,286,288,290,292,294,296,298,300,302,305,308,310],{"class":56,"line":285},23,[54,287,166],{"class":60},[54,289,169],{"class":113},[54,291,147],{"class":60},[54,293,174],{"class":113},[54,295,177],{"class":60},[54,297,180],{"class":123},[54,299,183],{"class":113},[54,301,186],{"class":60},[54,303,304],{"class":123}," 4",[54,306,307],{"class":113},"; ",[54,309,192],{"class":60},[54,311,195],{"class":113},[54,313,315],{"class":56,"line":314},24,[54,316,201],{"class":113},[54,318,320,323,326,329,332],{"class":56,"line":319},25,[54,321,322],{"class":113},"        threads.",[54,324,325],{"class":109},"emplace_back",[54,327,328],{"class":113},"(add_many, ",[54,330,331],{"class":123},"100000",[54,333,334],{"class":113},");\n",[54,336,338],{"class":56,"line":337},26,[54,339,216],{"class":113},[54,341,343],{"class":56,"line":342},27,[54,344,96],{"emptyLinePlaceholder":95},[54,346,348,350,352,355],{"class":56,"line":347},28,[54,349,166],{"class":60},[54,351,169],{"class":113},[54,353,354],{"class":60},"auto&",[54,356,357],{"class":113}," thread : threads)\n",[54,359,361],{"class":56,"line":360},29,[54,362,201],{"class":113},[54,364,366],{"class":56,"line":365},30,[54,367,368],{"class":102},"        \u002F\u002F join 会等待子线程结束，避免 main 提前退出。\n",[54,370,372,375,378],{"class":56,"line":371},31,[54,373,374],{"class":113},"        thread.",[54,376,377],{"class":109},"join",[54,379,380],{"class":113},"();\n",[54,382,384],{"class":56,"line":383},32,[54,385,216],{"class":113},[54,387,389],{"class":56,"line":388},33,[54,390,96],{"emptyLinePlaceholder":95},[54,392,394,396,399,402,405,408,411,413,416,419,422],{"class":56,"line":393},34,[54,395,261],{"class":109},[54,397,398],{"class":113},"::cout ",[54,400,401],{"class":60},"\u003C\u003C",[54,403,404],{"class":64}," \"counter = \"",[54,406,407],{"class":60}," \u003C\u003C",[54,409,410],{"class":113}," counter ",[54,412,401],{"class":60},[54,414,415],{"class":64}," \"",[54,417,418],{"class":123},"\\n",[54,420,421],{"class":64},"\"",[54,423,424],{"class":113},";\n",[54,426,428,430,432,434,437,439,441],{"class":56,"line":427},35,[54,429,261],{"class":109},[54,431,398],{"class":113},[54,433,401],{"class":60},[54,435,436],{"class":64}," \"expected = 400000",[54,438,418],{"class":123},[54,440,421],{"class":64},[54,442,424],{"class":113},[54,444,446],{"class":56,"line":445},36,[54,447,96],{"emptyLinePlaceholder":95},[54,449,451,454,456],{"class":56,"line":450},37,[54,452,453],{"class":60},"    return",[54,455,180],{"class":123},[54,457,424],{"class":113},[54,459,461],{"class":56,"line":460},38,[54,462,222],{"class":113},[14,464,465,469],{},[466,467,468],"strong",{},"运行结果","：",[45,471,476],{"className":472,"code":474,"language":475,"meta":50},[473],"language-text","counter = 400000\nexpected = 400000\n","text",[18,477,474],{"__ignoreMap":50},[40,479,481],{"id":480},"示例-2atomic-适合状态标记","示例 2：atomic 适合状态标记",[14,483,484],{},"下面例子用一个原子布尔值做停止标记。主线程修改标记，工作线程能安全看到变化。",[45,486,488],{"className":47,"code":487,"language":49,"meta":50,"style":50},"#include \u003Catomic>\n#include \u003Cchrono>\n#include \u003Ciostream>\n#include \u003Cthread>\n\n\u002F\u002F atomic 提供原子操作，适合简单的跨线程共享状态。\nstd::atomic\u003Cbool> running{true};\n\nvoid worker()\n{\n    int count = 0;\n    while (running)\n    {\n        ++count;\n        std::this_thread::sleep_for(std::chrono::milliseconds(100));\n    }\n\n    std::cout \u003C\u003C \"worker count = \" \u003C\u003C count \u003C\u003C \"\\n\";\n}\n\nint main()\n{\n    \u002F\u002F 程序从 main 函数开始执行，下面的语句会按顺序运行。\n    \u002F\u002F 创建子线程，让这部分代码和 main 线程并发运行。\n    std::thread t(worker);\n\n    std::this_thread::sleep_for(std::chrono::milliseconds(350));\n    running = false;\n\n    \u002F\u002F join 会等待子线程结束，避免 main 提前退出。\n    t.join();\n    std::cout \u003C\u003C \"stopped\\n\";\n\n    return 0;\n}\n",[18,489,490,496,503,509,515,519,523,540,544,553,557,571,579,583,590,628,632,636,661,665,669,677,681,685,690,703,707,738,750,754,759,768,785,789,797],{"__ignoreMap":50},[54,491,492,494],{"class":56,"line":57},[54,493,61],{"class":60},[54,495,65],{"class":64},[54,497,498,500],{"class":56,"line":68},[54,499,61],{"class":60},[54,501,502],{"class":64}," \u003Cchrono>\n",[54,504,505,507],{"class":56,"line":76},[54,506,61],{"class":60},[54,508,73],{"class":64},[54,510,511,513],{"class":56,"line":84},[54,512,61],{"class":60},[54,514,81],{"class":64},[54,516,517],{"class":56,"line":92},[54,518,96],{"emptyLinePlaceholder":95},[54,520,521],{"class":56,"line":99},[54,522,103],{"class":102},[54,524,525,527,529,532,535,538],{"class":56,"line":106},[54,526,110],{"class":109},[54,528,114],{"class":113},[54,530,531],{"class":60},"\u003Cbool>",[54,533,534],{"class":113}," running{",[54,536,537],{"class":123},"true",[54,539,127],{"class":113},[54,541,542],{"class":56,"line":130},[54,543,96],{"emptyLinePlaceholder":95},[54,545,546,548,551],{"class":56,"line":135},[54,547,138],{"class":60},[54,549,550],{"class":109}," worker",[54,552,238],{"class":113},[54,554,555],{"class":56,"line":157},[54,556,160],{"class":113},[54,558,559,562,565,567,569],{"class":56,"line":163},[54,560,561],{"class":60},"    int",[54,563,564],{"class":113}," count ",[54,566,177],{"class":60},[54,568,180],{"class":123},[54,570,424],{"class":113},[54,572,573,576],{"class":56,"line":198},[54,574,575],{"class":60},"    while",[54,577,578],{"class":113}," (running)\n",[54,580,581],{"class":56,"line":204},[54,582,201],{"class":113},[54,584,585,587],{"class":56,"line":213},[54,586,207],{"class":60},[54,588,589],{"class":113},"count;\n",[54,591,592,595,598,601,603,606,608,610,612,615,617,620,622,625],{"class":56,"line":219},[54,593,594],{"class":109},"        std",[54,596,597],{"class":113},"::",[54,599,600],{"class":109},"this_thread",[54,602,597],{"class":113},[54,604,605],{"class":109},"sleep_for",[54,607,144],{"class":113},[54,609,110],{"class":109},[54,611,597],{"class":113},[54,613,614],{"class":109},"chrono",[54,616,597],{"class":113},[54,618,619],{"class":109},"milliseconds",[54,621,144],{"class":113},[54,623,624],{"class":123},"100",[54,626,627],{"class":113},"));\n",[54,629,630],{"class":56,"line":225},[54,631,216],{"class":113},[54,633,634],{"class":56,"line":230},[54,635,96],{"emptyLinePlaceholder":95},[54,637,638,640,642,644,647,649,651,653,655,657,659],{"class":56,"line":241},[54,639,261],{"class":109},[54,641,398],{"class":113},[54,643,401],{"class":60},[54,645,646],{"class":64}," \"worker count = \"",[54,648,407],{"class":60},[54,650,564],{"class":113},[54,652,401],{"class":60},[54,654,415],{"class":64},[54,656,418],{"class":123},[54,658,421],{"class":64},[54,660,424],{"class":113},[54,662,663],{"class":56,"line":246},[54,664,222],{"class":113},[54,666,667],{"class":56,"line":252},[54,668,96],{"emptyLinePlaceholder":95},[54,670,671,673,675],{"class":56,"line":258},[54,672,147],{"class":60},[54,674,235],{"class":109},[54,676,238],{"class":113},[54,678,679],{"class":56,"line":280},[54,680,160],{"class":113},[54,682,683],{"class":56,"line":285},[54,684,249],{"class":102},[54,686,687],{"class":56,"line":314},[54,688,689],{"class":102},"    \u002F\u002F 创建子线程，让这部分代码和 main 线程并发运行。\n",[54,691,692,694,697,700],{"class":56,"line":319},[54,693,261],{"class":109},[54,695,696],{"class":113},"::thread ",[54,698,699],{"class":109},"t",[54,701,702],{"class":113},"(worker);\n",[54,704,705],{"class":56,"line":337},[54,706,96],{"emptyLinePlaceholder":95},[54,708,709,711,713,715,717,719,721,723,725,727,729,731,733,736],{"class":56,"line":342},[54,710,261],{"class":109},[54,712,597],{"class":113},[54,714,600],{"class":109},[54,716,597],{"class":113},[54,718,605],{"class":109},[54,720,144],{"class":113},[54,722,110],{"class":109},[54,724,597],{"class":113},[54,726,614],{"class":109},[54,728,597],{"class":113},[54,730,619],{"class":109},[54,732,144],{"class":113},[54,734,735],{"class":123},"350",[54,737,627],{"class":113},[54,739,740,743,745,748],{"class":56,"line":347},[54,741,742],{"class":113},"    running ",[54,744,177],{"class":60},[54,746,747],{"class":123}," false",[54,749,424],{"class":113},[54,751,752],{"class":56,"line":360},[54,753,96],{"emptyLinePlaceholder":95},[54,755,756],{"class":56,"line":365},[54,757,758],{"class":102},"    \u002F\u002F join 会等待子线程结束，避免 main 提前退出。\n",[54,760,761,764,766],{"class":56,"line":371},[54,762,763],{"class":113},"    t.",[54,765,377],{"class":109},[54,767,380],{"class":113},[54,769,770,772,774,776,779,781,783],{"class":56,"line":383},[54,771,261],{"class":109},[54,773,398],{"class":113},[54,775,401],{"class":60},[54,777,778],{"class":64}," \"stopped",[54,780,418],{"class":123},[54,782,421],{"class":64},[54,784,424],{"class":113},[54,786,787],{"class":56,"line":388},[54,788,96],{"emptyLinePlaceholder":95},[54,790,791,793,795],{"class":56,"line":393},[54,792,453],{"class":60},[54,794,180],{"class":123},[54,796,424],{"class":113},[54,798,799],{"class":56,"line":427},[54,800,222],{"class":113},[14,802,803,469],{},[466,804,805],{},"一种可能的运行结果",[45,807,810],{"className":808,"code":809,"language":475,"meta":50},[473],"worker count = 4\nstopped\n",[18,811,809],{"__ignoreMap":50},[10,813,815],{"id":814},"mutex-和-atomic-怎么选","mutex 和 atomic 怎么选",[817,818,819,833],"table",{},[820,821,822],"thead",{},[823,824,825,830],"tr",{},[826,827,829],"th",{"align":828},"left","场景",[826,831,832],{"align":828},"推荐",[834,835,836,846,856,866,875],"tbody",{},[823,837,838,842],{},[839,840,841],"td",{"align":828},"简单计数、自增、自减",[839,843,844],{"align":828},[18,845,5],{},[823,847,848,851],{},[839,849,850],{"align":828},"一个布尔停止标记",[839,852,853],{"align":828},[18,854,855],{},"std::atomic\u003Cbool>",[823,857,858,861],{},[839,859,860],{"align":828},"多个变量要同时保持一致",[839,862,863],{"align":828},[18,864,865],{},"std::mutex",[823,867,868,871],{},[839,869,870],{"align":828},"修改容器、对象内部复杂状态",[839,872,873],{"align":828},[18,874,865],{},[823,876,877,880],{},[839,878,879],{"align":828},"需要等待某个条件成立",[839,881,882],{"align":828},[18,883,884],{},"std::condition_variable",[10,886,887],{"id":887},"常见错误",[889,890,891,898,904],"ol",{},[892,893,894,895,897],"li",{},"以为用了 ",[18,896,30],{},"，整个对象就都线程安全。只有这个原子变量自己的操作是线程安全的。",[892,899,900,901,903],{},"用多个 ",[18,902,30],{}," 表达一个整体状态，却没有保证它们之间的一致性。",[892,905,906,907,909],{},"在复杂共享数据结构上强行用 ",[18,908,30],{},"，导致代码难懂又容易错。",[10,911,912],{"id":912},"小结",[914,915,916,922,927,932],"ul",{},[892,917,918,921],{},[18,919,920],{},"std::atomic\u003CT>"," 让简单变量的基本操作具备线程安全性。",[892,923,924,925,35],{},"简单计数器和停止标记很适合 ",[18,926,30],{},[892,928,929,930,35],{},"复杂共享状态仍然应该用 ",[18,931,34],{},[892,933,934],{},"初学阶段不必展开内存序，先掌握默认用法和适用边界。",[936,937,938],"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 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}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);}",{"title":50,"searchDepth":68,"depth":68,"links":940},[941,942,946,947,948],{"id":12,"depth":68,"text":12},{"id":38,"depth":68,"text":38,"children":943},[944,945],{"id":42,"depth":76,"text":43},{"id":480,"depth":76,"text":481},{"id":814,"depth":68,"text":815},{"id":887,"depth":68,"text":887},{"id":912,"depth":68,"text":912},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0300-std-atomic","2000-1900-0300","2023-10-05","wiki\u002F2023-10-05-cplusplus-jiao-xue","zh-cn:2023-10-05-cplusplus-jiao-xue","\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue","Cplusplus教学","md","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0300-std-atomic",false,null,"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0300-std-atomic","zh-CN","zh-cn",{},{"title":5,"description":50},"BF3I24oBT_lNx2ENc1EFf53PZZwbx2ZSa0QqkR28YME",[967,973,978,983,988,993,998,1003,1008,1013,1018,1023,1028,1033,1038,1043,1048,1053,1058,1063,1068,1073,1078,1083,1088,1093,1098,1103,1108,1113,1118,1123,1128,1133,1138,1143,1148,1153,1158,1163,1168,1173,1178,1183,1188,1193,1198,1203,1208,1213,1218,1223,1228,1233,1238,1243,1248,1253,1254,1259,1264,1269,1274,1279,1284,1289,1294,1299,1304,1309,1314,1319,1324,1329,1334,1339,1344,1349,1354,1359,1364,1369],{"path":968,"stem":969,"title":970,"date":951,"chapterOrder":971,"chapterDepth":972,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0100-c-kai-fa-huan-jing-da-jian-yu-ce-shi","wiki\u002F2023-10-05-Cplusplus教学\u002F0100-C++开发环境搭建与测试","C++开发环境搭建与测试","0100",0,{"path":974,"stem":975,"title":976,"date":951,"chapterOrder":977,"chapterDepth":972,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0200-c-ji-chu-chu-shi","wiki\u002F2023-10-05-Cplusplus教学\u002F0200-C++基础初识","C++基础初识","0200",{"path":979,"stem":980,"title":981,"date":951,"chapterOrder":982,"chapterDepth":972,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0300-shu-ju-lei-xing-yu-shu-ju-cun-fang","wiki\u002F2023-10-05-Cplusplus教学\u002F0300-数据类型与数据存放","数据类型与数据存放","0300",{"path":984,"stem":985,"title":986,"date":951,"chapterOrder":987,"chapterDepth":972,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0400-shu-ru-shu-chu","wiki\u002F2023-10-05-Cplusplus教学\u002F0400-输入输出","输入输出","0400",{"path":989,"stem":990,"title":991,"date":951,"chapterOrder":992,"chapterDepth":972,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0500-yun-suan-fu","wiki\u002F2023-10-05-Cplusplus教学\u002F0500-运算符","运算符","0500",{"path":994,"stem":995,"title":996,"date":951,"chapterOrder":997,"chapterDepth":972,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0600-cheng-xu-liu-cheng-jie-gou","wiki\u002F2023-10-05-Cplusplus教学\u002F0600-程序流程结构","程序流程结构","0600",{"path":999,"stem":1000,"title":1001,"date":951,"chapterOrder":1002,"chapterDepth":972,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0700-shu-zu","wiki\u002F2023-10-05-Cplusplus教学\u002F0700-数组","数组","0700",{"path":1004,"stem":1005,"title":1006,"date":951,"chapterOrder":1007,"chapterDepth":972,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0800-han-shu-yu-tou-wen-jian","wiki\u002F2023-10-05-Cplusplus教学\u002F0800-函数与头文件","函数与头文件","0800",{"path":1009,"stem":1010,"title":1011,"date":951,"chapterOrder":1012,"chapterDepth":972,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0900-zhi-zhen","wiki\u002F2023-10-05-Cplusplus教学\u002F0900-指针","指针","0900",{"path":1014,"stem":1015,"title":1016,"date":951,"chapterOrder":1017,"chapterDepth":972,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1000-jie-gou-ti-yu-gong-yong-ti","wiki\u002F2023-10-05-Cplusplus教学\u002F1000-结构体与共用体","结构体与共用体","1000",{"path":1019,"stem":1020,"title":1021,"date":951,"chapterOrder":1022,"chapterDepth":972,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1100-nei-cun-fen-qu-yu-sheng-ming-zhou-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1100-内存分区与生命周期","内存分区与生命周期","1100",{"path":1024,"stem":1025,"title":1026,"date":951,"chapterOrder":1027,"chapterDepth":972,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1200-yin-yong","wiki\u002F2023-10-05-Cplusplus教学\u002F1200-引用","引用","1200",{"path":1029,"stem":1030,"title":1031,"date":951,"chapterOrder":1032,"chapterDepth":972,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1300-han-shu-ti-gao-yu-ming-ming-kong-jian","wiki\u002F2023-10-05-Cplusplus教学\u002F1300-函数提高与命名空间","函数提高与命名空间","1300",{"path":1034,"stem":1035,"title":1036,"date":951,"chapterOrder":1037,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0100-feng-zhuang","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0100-封装","封装","1400-0100",{"path":1039,"stem":1040,"title":1041,"date":951,"chapterOrder":1042,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0200-dui-xiang-chu-shi-hua-he-qing-li","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0200-对象初始化和清理","对象初始化和清理","1400-0200",{"path":1044,"stem":1045,"title":1046,"date":951,"chapterOrder":1047,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0300-dui-xiang-mo-xing-yu-this-zhi-zhen","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0300-对象模型与this指针","对象模型与this指针","1400-0300",{"path":1049,"stem":1050,"title":1051,"date":951,"chapterOrder":1052,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0400-you-yuan-yu-yun-suan-fu-zhong-zai","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0400-友元与运算符重载","友元与运算符重载","1400-0400",{"path":1054,"stem":1055,"title":1056,"date":951,"chapterOrder":1057,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0500-ji-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0500-继承","继承","1400-0500",{"path":1059,"stem":1060,"title":1061,"date":951,"chapterOrder":1062,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0600-duo-tai","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0600-多态","多态","1400-0600",{"path":1064,"stem":1065,"title":1066,"date":951,"chapterOrder":1067,"chapterDepth":972,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-lei-he-dui-xiang","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-类和对象","类和对象","1400",{"path":1069,"stem":1070,"title":1071,"date":951,"chapterOrder":1072,"chapterDepth":972,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1500-wen-jian-cao-zuo","wiki\u002F2023-10-05-Cplusplus教学\u002F1500-文件操作","文件操作","1500",{"path":1074,"stem":1075,"title":1076,"date":951,"chapterOrder":1077,"chapterDepth":972,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1600-yi-chang-chu-li-yu-cuo-wu-ma","wiki\u002F2023-10-05-Cplusplus教学\u002F1600-异常处理与错误码","异常处理","1600",{"path":1079,"stem":1080,"title":1081,"date":951,"chapterOrder":1082,"chapterDepth":972,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1700-mu-ban","wiki\u002F2023-10-05-Cplusplus教学\u002F1700-模板","模板","1700",{"path":1084,"stem":1085,"title":1086,"date":951,"chapterOrder":1087,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0100-stl-chu-shi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0100-STL初识","STL初识","1800-0100",{"path":1089,"stem":1090,"title":1091,"date":951,"chapterOrder":1092,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0200-std-array","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0200-std-array","std::array","1800-0200",{"path":1094,"stem":1095,"title":1096,"date":951,"chapterOrder":1097,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0300-string-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0300-string容器","string容器","1800-0300",{"path":1099,"stem":1100,"title":1101,"date":951,"chapterOrder":1102,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0400-vector-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0400-vector容器","vector 容器","1800-0400",{"path":1104,"stem":1105,"title":1106,"date":951,"chapterOrder":1107,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0500-deque-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0500-deque容器","deque 容器","1800-0500",{"path":1109,"stem":1110,"title":1111,"date":951,"chapterOrder":1112,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0600-stack-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0600-stack容器","stack 容器","1800-0600",{"path":1114,"stem":1115,"title":1116,"date":951,"chapterOrder":1117,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0700-queue-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0700-queue容器","queue 容器","1800-0700",{"path":1119,"stem":1120,"title":1121,"date":951,"chapterOrder":1122,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0800-list-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0800-list容器","list 容器","1800-0800",{"path":1124,"stem":1125,"title":1126,"date":951,"chapterOrder":1127,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0900-set-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0900-set容器","set \u002F multiset 容器","1800-0900",{"path":1129,"stem":1130,"title":1131,"date":951,"chapterOrder":1132,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1000-map-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-1000-map容器","map \u002F multimap 容器","1800-1000",{"path":1134,"stem":1135,"title":1136,"date":951,"chapterOrder":1137,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1100-han-shu-dui-xiang-yu-wei-ci","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-1100-函数对象与谓词","函数对象与谓词","1800-1100",{"path":1139,"stem":1140,"title":1141,"date":951,"chapterOrder":1142,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1200-chang-yong-suan-fa","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-1200-常用算法","常用算法","1800-1200",{"path":1144,"stem":1145,"title":1146,"date":951,"chapterOrder":1147,"chapterDepth":972,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-stl-ti-gao-bian-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-STL提高编程","STL提高编程","1800",{"path":1149,"stem":1150,"title":1151,"date":951,"chapterOrder":1152,"chapterDepth":972,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1900-c-lei-xing-zhuan-huan","wiki\u002F2023-10-05-Cplusplus教学\u002F1900-C++类型转换","C++类型转换","1900",{"path":1154,"stem":1155,"title":1156,"date":951,"chapterOrder":1157,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0100-auto","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0100-auto","auto","2000-0100",{"path":1159,"stem":1160,"title":1161,"date":951,"chapterOrder":1162,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0200-nullptr","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0200-nullptr","nullptr","2000-0200",{"path":1164,"stem":1165,"title":1166,"date":951,"chapterOrder":1167,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0300-using","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0300-using","using","2000-0300",{"path":1169,"stem":1170,"title":1171,"date":951,"chapterOrder":1172,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0400-enum-class","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0400-enum-class","enum class","2000-0400",{"path":1174,"stem":1175,"title":1176,"date":951,"chapterOrder":1177,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0500-fan-wei-for-xun-huan","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0500-范围for循环","范围 for 循环","2000-0500",{"path":1179,"stem":1180,"title":1181,"date":951,"chapterOrder":1182,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0600-jie-gou-hua-bang-ding","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0600-结构化绑定","结构化绑定","2000-0600",{"path":1184,"stem":1185,"title":1186,"date":951,"chapterOrder":1187,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0700-constexpr","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0700-constexpr","constexpr","2000-0700",{"path":1189,"stem":1190,"title":1191,"date":951,"chapterOrder":1192,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0800-raii","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0800-RAII","RAII","2000-0800",{"path":1194,"stem":1195,"title":1196,"date":951,"chapterOrder":1197,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0900-zhi-neng-zhi-zhen","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0900-智能指针","智能指针","2000-0900",{"path":1199,"stem":1200,"title":1201,"date":951,"chapterOrder":1202,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1000-you-zhi-yin-yong-he-yi-dong-yu-yi","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1000-右值引用和移动语义","右值引用和移动语义","2000-1000",{"path":1204,"stem":1205,"title":1206,"date":951,"chapterOrder":1207,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1100-lambda-biao-da-shi","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1100-Lambda表达式","Lambda 表达式","2000-1100",{"path":1209,"stem":1210,"title":1211,"date":951,"chapterOrder":1212,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1200-std-function","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1200-std-function","std::function","2000-1200",{"path":1214,"stem":1215,"title":1216,"date":951,"chapterOrder":1217,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1300-std-bind","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1300-std-bind","std::bind","2000-1300",{"path":1219,"stem":1220,"title":1221,"date":951,"chapterOrder":1222,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1400-std-optional","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1400-std-optional","std::optional","2000-1400",{"path":1224,"stem":1225,"title":1226,"date":951,"chapterOrder":1227,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1500-std-variant","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1500-std-variant","std::variant","2000-1500",{"path":1229,"stem":1230,"title":1231,"date":951,"chapterOrder":1232,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1600-std-span","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1600-std-span","std::span","2000-1600",{"path":1234,"stem":1235,"title":1236,"date":951,"chapterOrder":1237,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1700-std-format-print","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1700-std-format-print","std::format \u002F std::print","2000-1700",{"path":1239,"stem":1240,"title":1241,"date":951,"chapterOrder":1242,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1800-std-chrono","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1800-std-chrono","std::chrono","2000-1800",{"path":1244,"stem":1245,"title":1246,"date":951,"chapterOrder":1247,"chapterDepth":68,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0100-std-thread","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0100-std-thread","std::thread 与 join","2000-1900-0100",{"path":1249,"stem":1250,"title":1251,"date":951,"chapterOrder":1252,"chapterDepth":68,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0200-mutex-lock-guard","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0200-mutex-lock-guard","mutex 与 lock_guard","2000-1900-0200",{"path":949,"stem":957,"title":5,"date":951,"chapterOrder":950,"chapterDepth":68,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},{"path":1255,"stem":1256,"title":1257,"date":951,"chapterOrder":1258,"chapterDepth":68,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0400-condition-variable","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0400-condition-variable","condition_variable","2000-1900-0400",{"path":1260,"stem":1261,"title":1262,"date":951,"chapterOrder":1263,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-bing-fa-bian-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-并发编程","并发编程","2000-1900",{"path":1265,"stem":1266,"title":1267,"date":951,"chapterOrder":1268,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2000-std-filesystem","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-2000-std-filesystem","std::filesystem","2000-2000",{"path":1270,"stem":1271,"title":1272,"date":951,"chapterOrder":1273,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2100-modules-jian-jie","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-2100-modules简介","modules 简介","2000-2100",{"path":1275,"stem":1276,"title":1277,"date":951,"chapterOrder":1278,"chapterDepth":972,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-xian-dai-c","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-现代C++","现代C++","2000",{"path":1280,"stem":1281,"title":1282,"date":951,"chapterOrder":1283,"chapterDepth":68,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0100-ding-shi-qi-yu-yi-bu-io","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0100-定时器与异步IO","定时器与异步 IO","2100-0100-0100",{"path":1285,"stem":1286,"title":1287,"date":951,"chapterOrder":1288,"chapterDepth":68,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0200-boost-asio-ji-chu","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0200-Boost.Asio基础","Boost.Asio 基础","2100-0100-0200",{"path":1290,"stem":1291,"title":1292,"date":951,"chapterOrder":1293,"chapterDepth":68,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0300-chuan-kou-tong-xin","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0300-串口通信","串口通信","2100-0100-0300",{"path":1295,"stem":1296,"title":1297,"date":951,"chapterOrder":1298,"chapterDepth":68,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0400-tcp-tong-xin","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0400-TCP通信","TCP 通信","2100-0100-0400",{"path":1300,"stem":1301,"title":1302,"date":951,"chapterOrder":1303,"chapterDepth":68,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0500-udp-tong-xin","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0500-UDP通信","UDP 通信","2100-0100-0500",{"path":1305,"stem":1306,"title":1307,"date":951,"chapterOrder":1308,"chapterDepth":68,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0600-ji-qi-ren-gong-cheng-xie-fa-yu-ros2-ji-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0600-机器人工程写法与ROS2集成","机器人工程写法与 ROS2 集成","2100-0100-0600",{"path":1310,"stem":1311,"title":1312,"date":951,"chapterOrder":1313,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-boost-asio-yi-bu-io-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-Boost.Asio异步IO库","Boost.Asio异步IO库","2100-0100",{"path":1315,"stem":1316,"title":1317,"date":951,"chapterOrder":1318,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0200-eigen-xian-xing-dai-shu-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0200-Eigen线性代数库","Eigen线性代数库","2100-0200",{"path":1320,"stem":1321,"title":1322,"date":951,"chapterOrder":1323,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0300-opencv-ji-suan-ji-shi-jue-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0300-OpenCV计算机视觉库","OpenCV计算机视觉库","2100-0300",{"path":1325,"stem":1326,"title":1327,"date":951,"chapterOrder":1328,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0400-pcl-dian-yun-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0400-PCL点云库","PCL点云库","2100-0400",{"path":1330,"stem":1331,"title":1332,"date":951,"chapterOrder":1333,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0500-sophus-li-qun-li-dai-shu-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0500-Sophus李群李代数库","Sophus 李群李代数库","2100-0500",{"path":1335,"stem":1336,"title":1337,"date":951,"chapterOrder":1338,"chapterDepth":972,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-chang-yong-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-常用库","常用库学习","2100",{"path":1340,"stem":1341,"title":1342,"date":951,"chapterOrder":1343,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0100-cmakepresets-yu-gou-jian-an-zhuang","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0100-CMakePresets与构建安装","CMakePresets与构建安装","2200-0100",{"path":1345,"stem":1346,"title":1347,"date":951,"chapterOrder":1348,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0200-ding-ceng-cmake-yu-gong-gong-bian-yi-xuan-xiang","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0200-顶层CMake与公共编译选项","顶层CMake与公共编译选项","2200-0200",{"path":1350,"stem":1351,"title":1352,"date":951,"chapterOrder":1353,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0300-src-yu-lib-mo-kuai-cmake-xiang-jie","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0300-src与lib模块CMake详解","src与lib模块CMake详解","2200-0300",{"path":1355,"stem":1356,"title":1357,"date":951,"chapterOrder":1358,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0400-di-san-fang-ku-yi-lai-xie-fa","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0400-第三方库依赖写法","第三方库依赖写法","2200-0400",{"path":1360,"stem":1361,"title":1362,"date":951,"chapterOrder":1363,"chapterDepth":57,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0500-mu-ban-kuo-zhan-yu-chang-jian-wen-ti","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0500-模板扩展与常见问题","模板扩展与常见问题","2200-0500",{"path":1365,"stem":1366,"title":1367,"date":951,"chapterOrder":1368,"chapterDepth":972,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":958},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-cmake-gong-cheng-mu-ban","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-CMake工程模板","CMake工程模板","2200",{"path":954,"stem":1370,"title":1371,"date":951,"chapterOrder":959,"chapterDepth":972,"docKey":953,"docRoot":954,"docTitle":955,"isWikiDoc":95,"isWikiIndex":95},"wiki\u002F2023-10-05-Cplusplus教学\u002Findex","C\u002FC++教程",{"variants":1373},[1374,1377,1380,1383,1386],{"path":1375,"localeSlug":1376,"i18nKey":957},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0300-std-atomic","en-us",{"path":1378,"localeSlug":1379,"i18nKey":957},"\u002Fzh-hant\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0300-std-atomic","zh-hant",{"path":1381,"localeSlug":1382,"i18nKey":957},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0300-std-atomic","zh-hk",{"path":1384,"localeSlug":1385,"i18nKey":957},"\u002Fzh-tw\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0300-std-atomic","zh-tw",{"path":949,"localeSlug":962,"i18nKey":957},[1375,960,1378,960,1381,960,1384,960,949,960],1784646788625]