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