[{"data":1,"prerenderedAt":1397},["ShallowReactive",2],{"wiki-page-/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-3-std-atomic":3,"wiki-doc-items-/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-3-std-atomic":967,"language-switcher-data-/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-3-std-atomic":1381,"wiki-i18n-paths-/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-3-std-atomic":1396},{"id":4,"title":5,"body":6,"canonicalPath":949,"chapter":950,"chapterSort":951,"date":952,"description":50,"docI18nKey":953,"docKey":954,"docRoot":955,"docTitle":956,"extension":957,"i18nKey":958,"isBlogPost":959,"isWikiDoc":95,"isWikiIndex":959,"layout":960,"legacyPath":961,"locale":962,"localeSlug":963,"meta":964,"navigation":95,"path":949,"seo":965,"sourcePath":961,"sourceStem":958,"stem":958,"wikiDepth":57,"__hash__":966},"content/wiki/2023-10-05-Cplusplus教学/ch18-19-3-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// 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    // 程序从 main 函数开始执行，下面的语句会按顺序运行。\n    // 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        // 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","// 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},"    // 程序从 main 函数开始执行，下面的语句会按顺序运行。\n",[54,251,253],{"class":56,"line":252},20,[54,254,255],{"class":102},"    // 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},"        // 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// 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    // 程序从 main 函数开始执行，下面的语句会按顺序运行。\n    // 创建子线程，让这部分代码和 main 线程并发运行。\n    std::thread t(worker);\n\n    std::this_thread::sleep_for(std::chrono::milliseconds(350));\n    running = false;\n\n    // 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},"    // 创建子线程，让这部分代码和 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},"    // 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},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-3-std-atomic","18.19.3",18190300,"2023-10-05","wiki/2023-10-05-cplusplus-jiao-xue","zh-cn:2023-10-05-cplusplus-jiao-xue","/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue","Cplusplus教学","md","wiki/2023-10-05-Cplusplus教学/ch18-19-3-std-atomic",false,null,"/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-3-std-atomic","zh-CN","zh-cn",{},{"title":5,"description":50},"k_xeECrouocjLJ-TsgOkwrmTKDcYoXGTxsKJSwnPbtY",[968,974,980,986,992,998,1004,1010,1016,1022,1028,1034,1040,1046,1052,1058,1064,1070,1076,1082,1088,1094,1100,1106,1112,1118,1124,1130,1136,1142,1148,1154,1160,1166,1172,1178,1179,1185,1191,1197,1203,1209,1215,1221,1227,1233,1239,1245,1251,1257,1263,1269,1275,1281,1287,1293,1299,1305,1311,1317,1323,1329,1335,1341,1347,1353,1359,1365,1371,1377],{"path":969,"stem":970,"title":971,"date":952,"chapter":972,"chapterSort":973,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch1-c-ji-chu-chu-shi","wiki/2023-10-05-Cplusplus教学/ch1-C++基础初识","C++基础初识","1",1000000,{"path":975,"stem":976,"title":977,"date":952,"chapter":978,"chapterSort":979,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch10-nei-cun-fen-qu-yu-sheng-ming-zhou-qi","wiki/2023-10-05-Cplusplus教学/ch10-内存分区与生命周期","内存分区与生命周期","10",10000000,{"path":981,"stem":982,"title":983,"date":952,"chapter":984,"chapterSort":985,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch11-yin-yong","wiki/2023-10-05-Cplusplus教学/ch11-引用","引用","11",11000000,{"path":987,"stem":988,"title":989,"date":952,"chapter":990,"chapterSort":991,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch12-han-shu-ti-gao-yu-ming-ming-kong-jian","wiki/2023-10-05-Cplusplus教学/ch12-函数提高与命名空间","函数提高与命名空间","12",12000000,{"path":993,"stem":994,"title":995,"date":952,"chapter":996,"chapterSort":997,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-1-feng-zhuang","wiki/2023-10-05-Cplusplus教学/ch13-1-封装","封装","13.1",13010000,{"path":999,"stem":1000,"title":1001,"date":952,"chapter":1002,"chapterSort":1003,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-2-dui-xiang-chu-shi-hua-he-qing-li","wiki/2023-10-05-Cplusplus教学/ch13-2-对象初始化和清理","对象初始化和清理","13.2",13020000,{"path":1005,"stem":1006,"title":1007,"date":952,"chapter":1008,"chapterSort":1009,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-3-dui-xiang-mo-xing-yu-this-zhi-zhen","wiki/2023-10-05-Cplusplus教学/ch13-3-对象模型与this指针","对象模型与this指针","13.3",13030000,{"path":1011,"stem":1012,"title":1013,"date":952,"chapter":1014,"chapterSort":1015,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-4-you-yuan-yu-yun-suan-fu-zhong-zai","wiki/2023-10-05-Cplusplus教学/ch13-4-友元与运算符重载","友元与运算符重载","13.4",13040000,{"path":1017,"stem":1018,"title":1019,"date":952,"chapter":1020,"chapterSort":1021,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-5-ji-cheng","wiki/2023-10-05-Cplusplus教学/ch13-5-继承","继承","13.5",13050000,{"path":1023,"stem":1024,"title":1025,"date":952,"chapter":1026,"chapterSort":1027,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-6-duo-tai","wiki/2023-10-05-Cplusplus教学/ch13-6-多态","多态","13.6",13060000,{"path":1029,"stem":1030,"title":1031,"date":952,"chapter":1032,"chapterSort":1033,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-lei-he-dui-xiang","wiki/2023-10-05-Cplusplus教学/ch13-类和对象","类和对象","13",13000000,{"path":1035,"stem":1036,"title":1037,"date":952,"chapter":1038,"chapterSort":1039,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch14-wen-jian-cao-zuo","wiki/2023-10-05-Cplusplus教学/ch14-文件操作","文件操作","14",14000000,{"path":1041,"stem":1042,"title":1043,"date":952,"chapter":1044,"chapterSort":1045,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch15-mu-ban","wiki/2023-10-05-Cplusplus教学/ch15-模板","模板","15",15000000,{"path":1047,"stem":1048,"title":1049,"date":952,"chapter":1050,"chapterSort":1051,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-1-stl-chu-shi","wiki/2023-10-05-Cplusplus教学/ch16-1-STL初识","STL初识","16.1",16010000,{"path":1053,"stem":1054,"title":1055,"date":952,"chapter":1056,"chapterSort":1057,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-2-std-array","wiki/2023-10-05-Cplusplus教学/ch16-2-std-array","std::array","16.2",16020000,{"path":1059,"stem":1060,"title":1061,"date":952,"chapter":1062,"chapterSort":1063,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-3-string-rong-qi","wiki/2023-10-05-Cplusplus教学/ch16-3-string容器","string容器","16.3",16030000,{"path":1065,"stem":1066,"title":1067,"date":952,"chapter":1068,"chapterSort":1069,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-4-vector-yu-deque-rong-qi","wiki/2023-10-05-Cplusplus教学/ch16-4-vector与deque容器","vector与deque容器","16.4",16040000,{"path":1071,"stem":1072,"title":1073,"date":952,"chapter":1074,"chapterSort":1075,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-5-stack-queue-list-rong-qi","wiki/2023-10-05-Cplusplus教学/ch16-5-stack-queue-list容器","stack / queue / list 容器","16.5",16050000,{"path":1077,"stem":1078,"title":1079,"date":952,"chapter":1080,"chapterSort":1081,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-6-set-map-rong-qi","wiki/2023-10-05-Cplusplus教学/ch16-6-set-map容器","set / map 容器","16.6",16060000,{"path":1083,"stem":1084,"title":1085,"date":952,"chapter":1086,"chapterSort":1087,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-7-han-shu-dui-xiang-yu-wei-ci","wiki/2023-10-05-Cplusplus教学/ch16-7-函数对象与谓词","函数对象与谓词","16.7",16070000,{"path":1089,"stem":1090,"title":1091,"date":952,"chapter":1092,"chapterSort":1093,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-8-chang-yong-suan-fa","wiki/2023-10-05-Cplusplus教学/ch16-8-常用算法","常用算法","16.8",16080000,{"path":1095,"stem":1096,"title":1097,"date":952,"chapter":1098,"chapterSort":1099,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-stl-ti-gao-bian-cheng","wiki/2023-10-05-Cplusplus教学/ch16-STL提高编程","STL提高编程","16",16000000,{"path":1101,"stem":1102,"title":1103,"date":952,"chapter":1104,"chapterSort":1105,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch17-c-lei-xing-zhuan-huan","wiki/2023-10-05-Cplusplus教学/ch17-C++类型转换","C++类型转换","17",17000000,{"path":1107,"stem":1108,"title":1109,"date":952,"chapter":1110,"chapterSort":1111,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-1-auto","wiki/2023-10-05-Cplusplus教学/ch18-1-auto","auto","18.1",18010000,{"path":1113,"stem":1114,"title":1115,"date":952,"chapter":1116,"chapterSort":1117,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-10-you-zhi-yin-yong-he-yi-dong-yu-yi","wiki/2023-10-05-Cplusplus教学/ch18-10-右值引用和移动语义","右值引用和移动语义","18.10",18100000,{"path":1119,"stem":1120,"title":1121,"date":952,"chapter":1122,"chapterSort":1123,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-11-lambda-biao-da-shi","wiki/2023-10-05-Cplusplus教学/ch18-11-Lambda表达式","Lambda 表达式","18.11",18110000,{"path":1125,"stem":1126,"title":1127,"date":952,"chapter":1128,"chapterSort":1129,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-12-std-function","wiki/2023-10-05-Cplusplus教学/ch18-12-std-function","std::function","18.12",18120000,{"path":1131,"stem":1132,"title":1133,"date":952,"chapter":1134,"chapterSort":1135,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-13-std-bind","wiki/2023-10-05-Cplusplus教学/ch18-13-std-bind","std::bind","18.13",18130000,{"path":1137,"stem":1138,"title":1139,"date":952,"chapter":1140,"chapterSort":1141,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-14-std-optional","wiki/2023-10-05-Cplusplus教学/ch18-14-std-optional","std::optional","18.14",18140000,{"path":1143,"stem":1144,"title":1145,"date":952,"chapter":1146,"chapterSort":1147,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-15-std-variant","wiki/2023-10-05-Cplusplus教学/ch18-15-std-variant","std::variant","18.15",18150000,{"path":1149,"stem":1150,"title":1151,"date":952,"chapter":1152,"chapterSort":1153,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-16-std-span","wiki/2023-10-05-Cplusplus教学/ch18-16-std-span","std::span","18.16",18160000,{"path":1155,"stem":1156,"title":1157,"date":952,"chapter":1158,"chapterSort":1159,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-17-std-format-print","wiki/2023-10-05-Cplusplus教学/ch18-17-std-format-print","std::format / std::print","18.17",18170000,{"path":1161,"stem":1162,"title":1163,"date":952,"chapter":1164,"chapterSort":1165,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-18-std-chrono","wiki/2023-10-05-Cplusplus教学/ch18-18-std-chrono","std::chrono","18.18",18180000,{"path":1167,"stem":1168,"title":1169,"date":952,"chapter":1170,"chapterSort":1171,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-1-std-thread","wiki/2023-10-05-Cplusplus教学/ch18-19-1-std-thread","std::thread 与 join","18.19.1",18190100,{"path":1173,"stem":1174,"title":1175,"date":952,"chapter":1176,"chapterSort":1177,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-2-mutex-lock-guard","wiki/2023-10-05-Cplusplus教学/ch18-19-2-mutex-lock-guard","mutex 与 lock_guard","18.19.2",18190200,{"path":949,"stem":958,"title":5,"date":952,"chapter":950,"chapterSort":951,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},{"path":1180,"stem":1181,"title":1182,"date":952,"chapter":1183,"chapterSort":1184,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-4-condition-variable","wiki/2023-10-05-Cplusplus教学/ch18-19-4-condition-variable","condition_variable","18.19.4",18190400,{"path":1186,"stem":1187,"title":1188,"date":952,"chapter":1189,"chapterSort":1190,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-bing-fa-bian-cheng","wiki/2023-10-05-Cplusplus教学/ch18-19-并发编程","并发编程","18.19",18190000,{"path":1192,"stem":1193,"title":1194,"date":952,"chapter":1195,"chapterSort":1196,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-2-nullptr","wiki/2023-10-05-Cplusplus教学/ch18-2-nullptr","nullptr","18.2",18020000,{"path":1198,"stem":1199,"title":1200,"date":952,"chapter":1201,"chapterSort":1202,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-20-std-filesystem","wiki/2023-10-05-Cplusplus教学/ch18-20-std-filesystem","std::filesystem","18.20",18200000,{"path":1204,"stem":1205,"title":1206,"date":952,"chapter":1207,"chapterSort":1208,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-21-modules-jian-jie","wiki/2023-10-05-Cplusplus教学/ch18-21-modules简介","modules 简介","18.21",18210000,{"path":1210,"stem":1211,"title":1212,"date":952,"chapter":1213,"chapterSort":1214,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-3-using","wiki/2023-10-05-Cplusplus教学/ch18-3-using","using","18.3",18030000,{"path":1216,"stem":1217,"title":1218,"date":952,"chapter":1219,"chapterSort":1220,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-4-enum-class","wiki/2023-10-05-Cplusplus教学/ch18-4-enum-class","enum class","18.4",18040000,{"path":1222,"stem":1223,"title":1224,"date":952,"chapter":1225,"chapterSort":1226,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-5-fan-wei-for-xun-huan","wiki/2023-10-05-Cplusplus教学/ch18-5-范围for循环","范围 for 循环","18.5",18050000,{"path":1228,"stem":1229,"title":1230,"date":952,"chapter":1231,"chapterSort":1232,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-6-jie-gou-hua-bang-ding","wiki/2023-10-05-Cplusplus教学/ch18-6-结构化绑定","结构化绑定","18.6",18060000,{"path":1234,"stem":1235,"title":1236,"date":952,"chapter":1237,"chapterSort":1238,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-7-constexpr","wiki/2023-10-05-Cplusplus教学/ch18-7-constexpr","constexpr","18.7",18070000,{"path":1240,"stem":1241,"title":1242,"date":952,"chapter":1243,"chapterSort":1244,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-8-raii","wiki/2023-10-05-Cplusplus教学/ch18-8-RAII","RAII","18.8",18080000,{"path":1246,"stem":1247,"title":1248,"date":952,"chapter":1249,"chapterSort":1250,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-9-zhi-neng-zhi-zhen","wiki/2023-10-05-Cplusplus教学/ch18-9-智能指针","智能指针","18.9",18090000,{"path":1252,"stem":1253,"title":1254,"date":952,"chapter":1255,"chapterSort":1256,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-xian-dai-c","wiki/2023-10-05-Cplusplus教学/ch18-现代C++","现代C++","18",18000000,{"path":1258,"stem":1259,"title":1260,"date":952,"chapter":1261,"chapterSort":1262,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-1-ding-shi-qi-yu-yi-bu-io","wiki/2023-10-05-Cplusplus教学/ch19-1-1-定时器与异步IO","定时器与异步 IO","19.1.1",19010100,{"path":1264,"stem":1265,"title":1266,"date":952,"chapter":1267,"chapterSort":1268,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-2-boost-asio-ji-chu","wiki/2023-10-05-Cplusplus教学/ch19-1-2-Boost.Asio基础","Boost.Asio 基础","19.1.2",19010200,{"path":1270,"stem":1271,"title":1272,"date":952,"chapter":1273,"chapterSort":1274,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-3-chuan-kou-tong-xin","wiki/2023-10-05-Cplusplus教学/ch19-1-3-串口通信","串口通信","19.1.3",19010300,{"path":1276,"stem":1277,"title":1278,"date":952,"chapter":1279,"chapterSort":1280,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-4-tcp-tong-xin","wiki/2023-10-05-Cplusplus教学/ch19-1-4-TCP通信","TCP 通信","19.1.4",19010400,{"path":1282,"stem":1283,"title":1284,"date":952,"chapter":1285,"chapterSort":1286,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-5-udp-tong-xin","wiki/2023-10-05-Cplusplus教学/ch19-1-5-UDP通信","UDP 通信","19.1.5",19010500,{"path":1288,"stem":1289,"title":1290,"date":952,"chapter":1291,"chapterSort":1292,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-6-ji-qi-ren-gong-cheng-xie-fa-yu-ros2-ji-cheng","wiki/2023-10-05-Cplusplus教学/ch19-1-6-机器人工程写法与ROS2集成","机器人工程写法与 ROS2 集成","19.1.6",19010600,{"path":1294,"stem":1295,"title":1296,"date":952,"chapter":1297,"chapterSort":1298,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-boost-asio-yi-bu-io-ku","wiki/2023-10-05-Cplusplus教学/ch19-1-Boost.Asio异步IO库","Boost.Asio异步IO库","19.1",19010000,{"path":1300,"stem":1301,"title":1302,"date":952,"chapter":1303,"chapterSort":1304,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-2-eigen-xian-xing-dai-shu-ku","wiki/2023-10-05-Cplusplus教学/ch19-2-Eigen线性代数库","Eigen线性代数库","19.2",19020000,{"path":1306,"stem":1307,"title":1308,"date":952,"chapter":1309,"chapterSort":1310,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-3-opencv-ji-suan-ji-shi-jue-ku","wiki/2023-10-05-Cplusplus教学/ch19-3-OpenCV计算机视觉库","OpenCV计算机视觉库","19.3",19030000,{"path":1312,"stem":1313,"title":1314,"date":952,"chapter":1315,"chapterSort":1316,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-4-pcl-dian-yun-ku","wiki/2023-10-05-Cplusplus教学/ch19-4-PCL点云库","PCL点云库","19.4",19040000,{"path":1318,"stem":1319,"title":1320,"date":952,"chapter":1321,"chapterSort":1322,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-5-sophus-li-qun-li-dai-shu-ku","wiki/2023-10-05-Cplusplus教学/ch19-5-Sophus李群李代数库","Sophus 李群李代数库","19.5",19050000,{"path":1324,"stem":1325,"title":1326,"date":952,"chapter":1327,"chapterSort":1328,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-chang-yong-ku","wiki/2023-10-05-Cplusplus教学/ch19-常用库","常用库学习","19",19000000,{"path":1330,"stem":1331,"title":1332,"date":952,"chapter":1333,"chapterSort":1334,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch2-shu-ju-lei-xing-yu-shu-ju-cun-fang","wiki/2023-10-05-Cplusplus教学/ch2-数据类型与数据存放","数据类型与数据存放","2",2000000,{"path":1336,"stem":1337,"title":1338,"date":952,"chapter":1339,"chapterSort":1340,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch3-shu-ru-shu-chu","wiki/2023-10-05-Cplusplus教学/ch3-输入输出","输入输出","3",3000000,{"path":1342,"stem":1343,"title":1344,"date":952,"chapter":1345,"chapterSort":1346,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch4-yun-suan-fu","wiki/2023-10-05-Cplusplus教学/ch4-运算符","运算符","4",4000000,{"path":1348,"stem":1349,"title":1350,"date":952,"chapter":1351,"chapterSort":1352,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch5-cheng-xu-liu-cheng-jie-gou","wiki/2023-10-05-Cplusplus教学/ch5-程序流程结构","程序流程结构","5",5000000,{"path":1354,"stem":1355,"title":1356,"date":952,"chapter":1357,"chapterSort":1358,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch6-shu-zu","wiki/2023-10-05-Cplusplus教学/ch6-数组","数组","6",6000000,{"path":1360,"stem":1361,"title":1362,"date":952,"chapter":1363,"chapterSort":1364,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch7-han-shu-yu-tou-wen-jian","wiki/2023-10-05-Cplusplus教学/ch7-函数与头文件","函数与头文件","7",7000000,{"path":1366,"stem":1367,"title":1368,"date":952,"chapter":1369,"chapterSort":1370,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch8-zhi-zhen","wiki/2023-10-05-Cplusplus教学/ch8-指针","指针","8",8000000,{"path":1372,"stem":1373,"title":1374,"date":952,"chapter":1375,"chapterSort":1376,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":959},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch9-jie-gou-ti-yu-gong-yong-ti","wiki/2023-10-05-Cplusplus教学/ch9-结构体与共用体","结构体与共用体","9",9000000,{"path":955,"stem":1378,"title":1379,"date":952,"chapter":960,"chapterSort":1380,"docKey":954,"docRoot":955,"docTitle":956,"isWikiDoc":95,"isWikiIndex":95},"wiki/2023-10-05-Cplusplus教学/index","C/C++教程",0,{"variants":1382},[1383,1386,1389,1392,1395],{"path":1384,"localeSlug":1385,"i18nKey":958},"/en-us/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-3-std-atomic","en-us",{"path":1387,"localeSlug":1388,"i18nKey":958},"/zh-hant/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-3-std-atomic","zh-hant",{"path":1390,"localeSlug":1391,"i18nKey":958},"/zh-hk/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-3-std-atomic","zh-hk",{"path":1393,"localeSlug":1394,"i18nKey":958},"/zh-tw/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-3-std-atomic","zh-tw",{"path":949,"localeSlug":963,"i18nKey":958},[1384,961,1387,961,1390,961,1393,961,949,961],1780663038047]