[{"data":1,"prerenderedAt":1756},["ShallowReactive",2],{"wiki-page-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0100-std-thread":3,"wiki-doc-items-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0100-std-thread":1335,"language-switcher-data-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0100-std-thread":1740,"wiki-i18n-paths-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0100-std-thread":1755},{"id":4,"title":5,"body":6,"canonicalPath":1317,"chapterDepth":79,"chapterOrder":1318,"date":1319,"description":61,"docI18nKey":1320,"docKey":1321,"docRoot":1322,"docTitle":1323,"extension":1324,"i18nKey":1325,"isBlogPost":1326,"isWikiDoc":106,"isWikiIndex":1326,"layout":1327,"legacyPath":1327,"locale":1328,"localeSlug":1329,"meta":1330,"navigation":106,"path":1317,"seo":1331,"sourcePath":1332,"sourceStem":1325,"stem":1333,"wikiDepth":68,"__hash__":1334},"content\u002F_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0100-std-thread.md","std::thread and join",{"type":7,"value":8,"toc":1308},"minimark",[9,14,22,39,43,48,55,610,617,625,642,646,649,659,1085,1089,1095,1098,1102,1105,1156,1166,1171,1260,1270,1274,1304],[10,11,13],"h2",{"id":12},"what-problem-does-this-section-solve","What problem does this section solve?",[15,16,17,21],"p",{},[18,19,20],"code",{},"std::thread"," is used to create a thread. Once created, the thread starts immediately, and the main thread can continue executing its own code.",[15,23,24,25,27,28,31,32,35,36,38],{},"When starting out, the most important thing to remember is: before destroying the ",[18,26,20],{}," object, you must call either ",[18,29,30],{},"join()"," or ",[18,33,34],{},"detach()",". In most tutorials and typical business code, ",[18,37,30],{}," is preferred because it waits for the thread to finish, making the lifecycle clearest.",[10,40,42],{"id":41},"example-code","Example code",[44,45,47],"h3",{"id":46},"example-1-create-two-threads-to-process-two-sets-of-data","Example 1: Create two threads to process two sets of data",[15,49,50,51,54],{},"In this example, two threads write to different ",[18,52,53],{},"vector"," containers, so there's no shared write access to the same container and no locking is needed. The main thread waits for both threads to finish before printing the results.",[56,57,62],"pre",{"className":58,"code":59,"language":60,"meta":61,"style":61},"language-cpp shiki shiki-themes github-light github-dark","#include \u003Cfunctional>\n#include \u003Ciostream>\n#include \u003Cthread>\n#include \u003Cvector>\n\n\u002F\u002F vector 是动态数组，元素数量可以在运行时变化。\nvoid fill_numbers(std::vector\u003Cint>& output, int start)\n{\n    for (int i = 0; i \u003C 3; ++i)\n    {\n        output.push_back(start + i);\n    }\n}\n\nvoid print_numbers(const char* name, const std::vector\u003Cint>& values)\n{\n    std::cout \u003C\u003C name \u003C\u003C \": \";\n    for (int value : values)\n    {\n        std::cout \u003C\u003C value \u003C\u003C \" \";\n    }\n    std::cout \u003C\u003C \"\\n\";\n}\n\nint main()\n{\n    \u002F\u002F 程序从 main 函数开始执行，下面的语句会按顺序运行。\n    std::vector\u003Cint> left;\n    std::vector\u003Cint> right;\n\n    \u002F\u002F 创建子线程，让这部分代码和 main 线程并发运行。\n    std::thread t1(fill_numbers, std::ref(left), 1);\n    std::thread t2(fill_numbers, std::ref(right), 10);\n\n    \u002F\u002F join 会等待子线程结束，避免 main 提前退出。\n    t1.join();\n    t2.join();\n\n    print_numbers(\"left\", left);\n    print_numbers(\"right\", right);\n    std::cout \u003C\u003C \"done\\n\";\n\n    return 0;\n}\n","cpp","",[18,63,64,77,85,93,101,108,115,164,170,208,214,232,238,244,249,292,297,320,332,337,357,362,382,387,392,403,408,414,428,440,445,451,481,507,512,518,530,540,545,559,572,590,595,605],{"__ignoreMap":61},[65,66,69,73],"span",{"class":67,"line":68},"line",1,[65,70,72],{"class":71},"szBVR","#include",[65,74,76],{"class":75},"sZZnC"," \u003Cfunctional>\n",[65,78,80,82],{"class":67,"line":79},2,[65,81,72],{"class":71},[65,83,84],{"class":75}," \u003Ciostream>\n",[65,86,88,90],{"class":67,"line":87},3,[65,89,72],{"class":71},[65,91,92],{"class":75}," \u003Cthread>\n",[65,94,96,98],{"class":67,"line":95},4,[65,97,72],{"class":71},[65,99,100],{"class":75}," \u003Cvector>\n",[65,102,104],{"class":67,"line":103},5,[65,105,107],{"emptyLinePlaceholder":106},true,"\n",[65,109,111],{"class":67,"line":110},6,[65,112,114],{"class":113},"sJ8bj","\u002F\u002F vector 是动态数组，元素数量可以在运行时变化。\n",[65,116,118,121,125,129,132,135,137,140,143,146,149,153,156,158,161],{"class":67,"line":117},7,[65,119,120],{"class":71},"void",[65,122,124],{"class":123},"sScJk"," fill_numbers",[65,126,128],{"class":127},"sVt8B","(",[65,130,131],{"class":123},"std",[65,133,134],{"class":127},"::",[65,136,53],{"class":123},[65,138,139],{"class":127},"\u003C",[65,141,142],{"class":71},"int",[65,144,145],{"class":127},">",[65,147,148],{"class":71},"&",[65,150,152],{"class":151},"s4XuR"," output",[65,154,155],{"class":127},", ",[65,157,142],{"class":71},[65,159,160],{"class":151}," start",[65,162,163],{"class":127},")\n",[65,165,167],{"class":67,"line":166},8,[65,168,169],{"class":127},"{\n",[65,171,173,176,179,181,184,187,191,194,196,199,202,205],{"class":67,"line":172},9,[65,174,175],{"class":71},"    for",[65,177,178],{"class":127}," (",[65,180,142],{"class":71},[65,182,183],{"class":127}," i ",[65,185,186],{"class":71},"=",[65,188,190],{"class":189},"sj4cs"," 0",[65,192,193],{"class":127},"; i ",[65,195,139],{"class":71},[65,197,198],{"class":189}," 3",[65,200,201],{"class":127},"; ",[65,203,204],{"class":71},"++",[65,206,207],{"class":127},"i)\n",[65,209,211],{"class":67,"line":210},10,[65,212,213],{"class":127},"    {\n",[65,215,217,220,223,226,229],{"class":67,"line":216},11,[65,218,219],{"class":127},"        output.",[65,221,222],{"class":123},"push_back",[65,224,225],{"class":127},"(start ",[65,227,228],{"class":71},"+",[65,230,231],{"class":127}," i);\n",[65,233,235],{"class":67,"line":234},12,[65,236,237],{"class":127},"    }\n",[65,239,241],{"class":67,"line":240},13,[65,242,243],{"class":127},"}\n",[65,245,247],{"class":67,"line":246},14,[65,248,107],{"emptyLinePlaceholder":106},[65,250,252,254,257,259,262,265,268,270,272,275,277,279,281,283,285,287,290],{"class":67,"line":251},15,[65,253,120],{"class":71},[65,255,256],{"class":123}," print_numbers",[65,258,128],{"class":127},[65,260,261],{"class":71},"const",[65,263,264],{"class":71}," char*",[65,266,267],{"class":151}," name",[65,269,155],{"class":127},[65,271,261],{"class":71},[65,273,274],{"class":123}," std",[65,276,134],{"class":127},[65,278,53],{"class":123},[65,280,139],{"class":127},[65,282,142],{"class":71},[65,284,145],{"class":127},[65,286,148],{"class":71},[65,288,289],{"class":151}," values",[65,291,163],{"class":127},[65,293,295],{"class":67,"line":294},16,[65,296,169],{"class":127},[65,298,300,303,306,309,312,314,317],{"class":67,"line":299},17,[65,301,302],{"class":123},"    std",[65,304,305],{"class":127},"::cout ",[65,307,308],{"class":71},"\u003C\u003C",[65,310,311],{"class":127}," name ",[65,313,308],{"class":71},[65,315,316],{"class":75}," \": \"",[65,318,319],{"class":127},";\n",[65,321,323,325,327,329],{"class":67,"line":322},18,[65,324,175],{"class":71},[65,326,178],{"class":127},[65,328,142],{"class":71},[65,330,331],{"class":127}," value : values)\n",[65,333,335],{"class":67,"line":334},19,[65,336,213],{"class":127},[65,338,340,343,345,347,350,352,355],{"class":67,"line":339},20,[65,341,342],{"class":123},"        std",[65,344,305],{"class":127},[65,346,308],{"class":71},[65,348,349],{"class":127}," value ",[65,351,308],{"class":71},[65,353,354],{"class":75}," \" \"",[65,356,319],{"class":127},[65,358,360],{"class":67,"line":359},21,[65,361,237],{"class":127},[65,363,365,367,369,371,374,377,380],{"class":67,"line":364},22,[65,366,302],{"class":123},[65,368,305],{"class":127},[65,370,308],{"class":71},[65,372,373],{"class":75}," \"",[65,375,376],{"class":189},"\\n",[65,378,379],{"class":75},"\"",[65,381,319],{"class":127},[65,383,385],{"class":67,"line":384},23,[65,386,243],{"class":127},[65,388,390],{"class":67,"line":389},24,[65,391,107],{"emptyLinePlaceholder":106},[65,393,395,397,400],{"class":67,"line":394},25,[65,396,142],{"class":71},[65,398,399],{"class":123}," main",[65,401,402],{"class":127},"()\n",[65,404,406],{"class":67,"line":405},26,[65,407,169],{"class":127},[65,409,411],{"class":67,"line":410},27,[65,412,413],{"class":113},"    \u002F\u002F 程序从 main 函数开始执行，下面的语句会按顺序运行。\n",[65,415,417,419,422,425],{"class":67,"line":416},28,[65,418,302],{"class":123},[65,420,421],{"class":127},"::vector",[65,423,424],{"class":71},"\u003Cint>",[65,426,427],{"class":127}," left;\n",[65,429,431,433,435,437],{"class":67,"line":430},29,[65,432,302],{"class":123},[65,434,421],{"class":127},[65,436,424],{"class":71},[65,438,439],{"class":127}," right;\n",[65,441,443],{"class":67,"line":442},30,[65,444,107],{"emptyLinePlaceholder":106},[65,446,448],{"class":67,"line":447},31,[65,449,450],{"class":113},"    \u002F\u002F 创建子线程，让这部分代码和 main 线程并发运行。\n",[65,452,454,456,459,462,465,467,469,472,475,478],{"class":67,"line":453},32,[65,455,302],{"class":123},[65,457,458],{"class":127},"::thread ",[65,460,461],{"class":123},"t1",[65,463,464],{"class":127},"(fill_numbers, ",[65,466,131],{"class":123},[65,468,134],{"class":127},[65,470,471],{"class":123},"ref",[65,473,474],{"class":127},"(left), ",[65,476,477],{"class":189},"1",[65,479,480],{"class":127},");\n",[65,482,484,486,488,491,493,495,497,499,502,505],{"class":67,"line":483},33,[65,485,302],{"class":123},[65,487,458],{"class":127},[65,489,490],{"class":123},"t2",[65,492,464],{"class":127},[65,494,131],{"class":123},[65,496,134],{"class":127},[65,498,471],{"class":123},[65,500,501],{"class":127},"(right), ",[65,503,504],{"class":189},"10",[65,506,480],{"class":127},[65,508,510],{"class":67,"line":509},34,[65,511,107],{"emptyLinePlaceholder":106},[65,513,515],{"class":67,"line":514},35,[65,516,517],{"class":113},"    \u002F\u002F join 会等待子线程结束，避免 main 提前退出。\n",[65,519,521,524,527],{"class":67,"line":520},36,[65,522,523],{"class":127},"    t1.",[65,525,526],{"class":123},"join",[65,528,529],{"class":127},"();\n",[65,531,533,536,538],{"class":67,"line":532},37,[65,534,535],{"class":127},"    t2.",[65,537,526],{"class":123},[65,539,529],{"class":127},[65,541,543],{"class":67,"line":542},38,[65,544,107],{"emptyLinePlaceholder":106},[65,546,548,551,553,556],{"class":67,"line":547},39,[65,549,550],{"class":123},"    print_numbers",[65,552,128],{"class":127},[65,554,555],{"class":75},"\"left\"",[65,557,558],{"class":127},", left);\n",[65,560,562,564,566,569],{"class":67,"line":561},40,[65,563,550],{"class":123},[65,565,128],{"class":127},[65,567,568],{"class":75},"\"right\"",[65,570,571],{"class":127},", right);\n",[65,573,575,577,579,581,584,586,588],{"class":67,"line":574},41,[65,576,302],{"class":123},[65,578,305],{"class":127},[65,580,308],{"class":71},[65,582,583],{"class":75}," \"done",[65,585,376],{"class":189},[65,587,379],{"class":75},[65,589,319],{"class":127},[65,591,593],{"class":67,"line":592},42,[65,594,107],{"emptyLinePlaceholder":106},[65,596,598,601,603],{"class":67,"line":597},43,[65,599,600],{"class":71},"    return",[65,602,190],{"class":189},[65,604,319],{"class":127},[65,606,608],{"class":67,"line":607},44,[65,609,243],{"class":127},[15,611,612,616],{},[613,614,615],"strong",{},"Results","：",[56,618,623],{"className":619,"code":621,"language":622,"meta":61},[620],"language-text","left: 1 2 3\nright: 10 11 12\ndone\n","text",[18,624,621],{"__ignoreMap":61},[15,626,627,628,631,632,635,636,638,639,641],{},"Here we use ",[18,629,630],{},"std::ref(left)"," and ",[18,633,634],{},"std::ref(right)"," to pass ",[18,637,53],{}," by reference to the thread function. Otherwise, ",[18,640,20],{}," will attempt to copy the parameter.",[44,643,645],{"id":644},"example-2-sequential-waiting-vs-concurrent-waiting","Example 2: Sequential Waiting vs Concurrent Waiting",[15,647,648],{},"When a single task waits for 1 second, both the sequential writing and thread writing seem to simply \"finish waiting.\" However, when two tasks each wait for 1 second, the difference becomes clear:",[650,651,652,656],"ul",{},[653,654,655],"li",{},"Sequential execution: wait for A, then wait for B, taking approximately 2 seconds in total.",[653,657,658],{},"Two threads: A and B wait simultaneously, for a total of about one second.",[56,660,662],{"className":58,"code":661,"language":60,"meta":61,"style":61},"#include \u003Cchrono>\n#include \u003Ciostream>\n#include \u003Cthread>\n\nusing namespace std::chrono;\n\nvoid wait_one_second()\n{\n    std::this_thread::sleep_for(seconds(1));\n}\n\nlong long run_sync()\n{\n    auto begin = steady_clock::now();\n\n    wait_one_second();\n    wait_one_second();\n\n    auto end = steady_clock::now();\n    return duration_cast\u003Cseconds>(end - begin).count();\n}\n\nlong long run_threads()\n{\n    auto begin = steady_clock::now();\n\n    \u002F\u002F 创建子线程，让这部分代码和 main 线程并发运行。\n    std::thread t1(wait_one_second);\n    std::thread t2(wait_one_second);\n\n    \u002F\u002F join 会等待子线程结束，避免 main 提前退出。\n    t1.join();\n    t2.join();\n\n    auto end = steady_clock::now();\n    return duration_cast\u003Cseconds>(end - begin).count();\n}\n\nint main()\n{\n    \u002F\u002F 程序从 main 函数开始执行，下面的语句会按顺序运行。\n    std::cout \u003C\u003C \"sync seconds = \" \u003C\u003C run_sync() \u003C\u003C \"\\n\";\n    std::cout \u003C\u003C \"thread seconds = \" \u003C\u003C run_threads() \u003C\u003C \"\\n\";\n\n    return 0;\n}\n",[18,663,664,671,677,683,687,704,708,717,721,747,751,755,768,772,792,796,803,809,813,830,855,859,863,874,878,894,898,902,913,923,927,931,939,947,951,967,987,991,995,1003,1007,1011,1040,1067,1071,1080],{"__ignoreMap":61},[65,665,666,668],{"class":67,"line":68},[65,667,72],{"class":71},[65,669,670],{"class":75}," \u003Cchrono>\n",[65,672,673,675],{"class":67,"line":79},[65,674,72],{"class":71},[65,676,84],{"class":75},[65,678,679,681],{"class":67,"line":87},[65,680,72],{"class":71},[65,682,92],{"class":75},[65,684,685],{"class":67,"line":95},[65,686,107],{"emptyLinePlaceholder":106},[65,688,689,692,695,697,699,702],{"class":67,"line":103},[65,690,691],{"class":71},"using",[65,693,694],{"class":71}," namespace",[65,696,274],{"class":123},[65,698,134],{"class":127},[65,700,701],{"class":123},"chrono",[65,703,319],{"class":127},[65,705,706],{"class":67,"line":110},[65,707,107],{"emptyLinePlaceholder":106},[65,709,710,712,715],{"class":67,"line":117},[65,711,120],{"class":71},[65,713,714],{"class":123}," wait_one_second",[65,716,402],{"class":127},[65,718,719],{"class":67,"line":166},[65,720,169],{"class":127},[65,722,723,725,727,730,732,735,737,740,742,744],{"class":67,"line":172},[65,724,302],{"class":123},[65,726,134],{"class":127},[65,728,729],{"class":123},"this_thread",[65,731,134],{"class":127},[65,733,734],{"class":123},"sleep_for",[65,736,128],{"class":127},[65,738,739],{"class":123},"seconds",[65,741,128],{"class":127},[65,743,477],{"class":189},[65,745,746],{"class":127},"));\n",[65,748,749],{"class":67,"line":210},[65,750,243],{"class":127},[65,752,753],{"class":67,"line":216},[65,754,107],{"emptyLinePlaceholder":106},[65,756,757,760,763,766],{"class":67,"line":234},[65,758,759],{"class":71},"long",[65,761,762],{"class":71}," long",[65,764,765],{"class":123}," run_sync",[65,767,402],{"class":127},[65,769,770],{"class":67,"line":240},[65,771,169],{"class":127},[65,773,774,777,780,782,785,787,790],{"class":67,"line":246},[65,775,776],{"class":71},"    auto",[65,778,779],{"class":127}," begin ",[65,781,186],{"class":71},[65,783,784],{"class":123}," steady_clock",[65,786,134],{"class":127},[65,788,789],{"class":123},"now",[65,791,529],{"class":127},[65,793,794],{"class":67,"line":251},[65,795,107],{"emptyLinePlaceholder":106},[65,797,798,801],{"class":67,"line":294},[65,799,800],{"class":123},"    wait_one_second",[65,802,529],{"class":127},[65,804,805,807],{"class":67,"line":299},[65,806,800],{"class":123},[65,808,529],{"class":127},[65,810,811],{"class":67,"line":322},[65,812,107],{"emptyLinePlaceholder":106},[65,814,815,817,820,822,824,826,828],{"class":67,"line":334},[65,816,776],{"class":71},[65,818,819],{"class":127}," end ",[65,821,186],{"class":71},[65,823,784],{"class":123},[65,825,134],{"class":127},[65,827,789],{"class":123},[65,829,529],{"class":127},[65,831,832,834,837,839,841,844,847,850,853],{"class":67,"line":339},[65,833,600],{"class":71},[65,835,836],{"class":123}," duration_cast",[65,838,139],{"class":127},[65,840,739],{"class":123},[65,842,843],{"class":127},">(end ",[65,845,846],{"class":71},"-",[65,848,849],{"class":127}," begin).",[65,851,852],{"class":123},"count",[65,854,529],{"class":127},[65,856,857],{"class":67,"line":359},[65,858,243],{"class":127},[65,860,861],{"class":67,"line":364},[65,862,107],{"emptyLinePlaceholder":106},[65,864,865,867,869,872],{"class":67,"line":384},[65,866,759],{"class":71},[65,868,762],{"class":71},[65,870,871],{"class":123}," run_threads",[65,873,402],{"class":127},[65,875,876],{"class":67,"line":389},[65,877,169],{"class":127},[65,879,880,882,884,886,888,890,892],{"class":67,"line":394},[65,881,776],{"class":71},[65,883,779],{"class":127},[65,885,186],{"class":71},[65,887,784],{"class":123},[65,889,134],{"class":127},[65,891,789],{"class":123},[65,893,529],{"class":127},[65,895,896],{"class":67,"line":405},[65,897,107],{"emptyLinePlaceholder":106},[65,899,900],{"class":67,"line":410},[65,901,450],{"class":113},[65,903,904,906,908,910],{"class":67,"line":416},[65,905,302],{"class":123},[65,907,458],{"class":127},[65,909,461],{"class":123},[65,911,912],{"class":127},"(wait_one_second);\n",[65,914,915,917,919,921],{"class":67,"line":430},[65,916,302],{"class":123},[65,918,458],{"class":127},[65,920,490],{"class":123},[65,922,912],{"class":127},[65,924,925],{"class":67,"line":442},[65,926,107],{"emptyLinePlaceholder":106},[65,928,929],{"class":67,"line":447},[65,930,517],{"class":113},[65,932,933,935,937],{"class":67,"line":453},[65,934,523],{"class":127},[65,936,526],{"class":123},[65,938,529],{"class":127},[65,940,941,943,945],{"class":67,"line":483},[65,942,535],{"class":127},[65,944,526],{"class":123},[65,946,529],{"class":127},[65,948,949],{"class":67,"line":509},[65,950,107],{"emptyLinePlaceholder":106},[65,952,953,955,957,959,961,963,965],{"class":67,"line":514},[65,954,776],{"class":71},[65,956,819],{"class":127},[65,958,186],{"class":71},[65,960,784],{"class":123},[65,962,134],{"class":127},[65,964,789],{"class":123},[65,966,529],{"class":127},[65,968,969,971,973,975,977,979,981,983,985],{"class":67,"line":520},[65,970,600],{"class":71},[65,972,836],{"class":123},[65,974,139],{"class":127},[65,976,739],{"class":123},[65,978,843],{"class":127},[65,980,846],{"class":71},[65,982,849],{"class":127},[65,984,852],{"class":123},[65,986,529],{"class":127},[65,988,989],{"class":67,"line":532},[65,990,243],{"class":127},[65,992,993],{"class":67,"line":542},[65,994,107],{"emptyLinePlaceholder":106},[65,996,997,999,1001],{"class":67,"line":547},[65,998,142],{"class":71},[65,1000,399],{"class":123},[65,1002,402],{"class":127},[65,1004,1005],{"class":67,"line":561},[65,1006,169],{"class":127},[65,1008,1009],{"class":67,"line":574},[65,1010,413],{"class":113},[65,1012,1013,1015,1017,1019,1022,1025,1027,1030,1032,1034,1036,1038],{"class":67,"line":592},[65,1014,302],{"class":123},[65,1016,305],{"class":127},[65,1018,308],{"class":71},[65,1020,1021],{"class":75}," \"sync seconds = \"",[65,1023,1024],{"class":71}," \u003C\u003C",[65,1026,765],{"class":123},[65,1028,1029],{"class":127},"() ",[65,1031,308],{"class":71},[65,1033,373],{"class":75},[65,1035,376],{"class":189},[65,1037,379],{"class":75},[65,1039,319],{"class":127},[65,1041,1042,1044,1046,1048,1051,1053,1055,1057,1059,1061,1063,1065],{"class":67,"line":597},[65,1043,302],{"class":123},[65,1045,305],{"class":127},[65,1047,308],{"class":71},[65,1049,1050],{"class":75}," \"thread seconds = \"",[65,1052,1024],{"class":71},[65,1054,871],{"class":123},[65,1056,1029],{"class":127},[65,1058,308],{"class":71},[65,1060,373],{"class":75},[65,1062,376],{"class":189},[65,1064,379],{"class":75},[65,1066,319],{"class":127},[65,1068,1069],{"class":67,"line":607},[65,1070,107],{"emptyLinePlaceholder":106},[65,1072,1074,1076,1078],{"class":67,"line":1073},45,[65,1075,600],{"class":71},[65,1077,190],{"class":189},[65,1079,319],{"class":127},[65,1081,1083],{"class":67,"line":1082},46,[65,1084,243],{"class":127},[15,1086,1087,616],{},[613,1088,615],{},[56,1090,1093],{"className":1091,"code":1092,"language":622,"meta":61},[620],"sync seconds = 2\nthread seconds = 1\n",[18,1094,1092],{"__ignoreMap":61},[15,1096,1097],{},"This example doesn't mean that all tasks should use threads. Thread creation and scheduling also have overhead. For very short tasks, such as performing just a few additions, creating a thread might actually be slower and counterproductive.",[10,1099,1101],{"id":1100},"common-errors","Common Errors",[15,1103,1104],{},"Error 1: Forgetting join or detach",[56,1106,1108],{"className":58,"code":1107,"language":60,"meta":61,"style":61},"{\n    std::thread t([] {\n        std::cout \u003C\u003C \"work\\n\";\n    });\n} \u002F\u002F t 还是 joinable，程序会 std::terminate\n",[18,1109,1110,1114,1126,1143,1148],{"__ignoreMap":61},[65,1111,1112],{"class":67,"line":68},[65,1113,169],{"class":127},[65,1115,1116,1118,1120,1123],{"class":67,"line":79},[65,1117,302],{"class":123},[65,1119,458],{"class":127},[65,1121,1122],{"class":123},"t",[65,1124,1125],{"class":127},"([] {\n",[65,1127,1128,1130,1132,1134,1137,1139,1141],{"class":67,"line":87},[65,1129,342],{"class":123},[65,1131,305],{"class":127},[65,1133,308],{"class":71},[65,1135,1136],{"class":75}," \"work",[65,1138,376],{"class":189},[65,1140,379],{"class":75},[65,1142,319],{"class":127},[65,1144,1145],{"class":67,"line":95},[65,1146,1147],{"class":127},"    });\n",[65,1149,1150,1153],{"class":67,"line":103},[65,1151,1152],{"class":127},"}",[65,1154,1155],{"class":113}," \u002F\u002F t 还是 joinable，程序会 std::terminate\n",[15,1157,1158,1159,1162,1163,1165],{},"The correct approach is to call ",[18,1160,1161],{},"t.join()"," before ",[18,1164,1122],{}," leaves scope.",[15,1167,1168],{},[613,1169,1170],{},"Error 2: Thread function references destroyed local variables",[56,1172,1174],{"className":58,"code":1173,"language":60,"meta":61,"style":61},"void start_thread()\n{\n    int value = 42;\n    std::thread t([&value] {\n        std::cout \u003C\u003C value \u003C\u003C \"\\n\";\n    });\n    t.detach();\n}\n",[18,1175,1176,1185,1189,1203,1222,1242,1246,1256],{"__ignoreMap":61},[65,1177,1178,1180,1183],{"class":67,"line":68},[65,1179,120],{"class":71},[65,1181,1182],{"class":123}," start_thread",[65,1184,402],{"class":127},[65,1186,1187],{"class":67,"line":79},[65,1188,169],{"class":127},[65,1190,1191,1194,1196,1198,1201],{"class":67,"line":87},[65,1192,1193],{"class":71},"    int",[65,1195,349],{"class":127},[65,1197,186],{"class":71},[65,1199,1200],{"class":189}," 42",[65,1202,319],{"class":127},[65,1204,1205,1207,1209,1211,1214,1216,1219],{"class":67,"line":95},[65,1206,302],{"class":123},[65,1208,458],{"class":127},[65,1210,1122],{"class":123},[65,1212,1213],{"class":127},"([",[65,1215,148],{"class":71},[65,1217,1218],{"class":151},"value",[65,1220,1221],{"class":127},"] {\n",[65,1223,1224,1226,1228,1230,1232,1234,1236,1238,1240],{"class":67,"line":103},[65,1225,342],{"class":123},[65,1227,305],{"class":127},[65,1229,308],{"class":71},[65,1231,349],{"class":127},[65,1233,308],{"class":71},[65,1235,373],{"class":75},[65,1237,376],{"class":189},[65,1239,379],{"class":75},[65,1241,319],{"class":127},[65,1243,1244],{"class":67,"line":110},[65,1245,1147],{"class":127},[65,1247,1248,1251,1254],{"class":67,"line":117},[65,1249,1250],{"class":127},"    t.",[65,1252,1253],{"class":123},"detach",[65,1255,529],{"class":127},[65,1257,1258],{"class":67,"line":166},[65,1259,243],{"class":127},[15,1261,1262,1263,1266,1267,1269],{},"The thread may execute later than ",[18,1264,1265],{},"start_thread()","'s return, by which time ",[18,1268,1218],{}," might already be destroyed. The proper approach is to capture by value or manage the lifecycle using smart pointers.",[10,1271,1273],{"id":1272},"summary","Summary",[650,1275,1276,1281,1286,1295,1301],{},[653,1277,1278,1280],{},[18,1279,20],{}," will start immediately after creation.",[653,1282,1283,1285],{},[18,1284,30],{}," indicates waiting for the thread to complete.",[653,1287,1288,1289,1291,1292,1294],{},"For beginners, prioritize using ",[18,1290,30],{}," and minimize the use of ",[18,1293,34],{},".",[653,1296,1297,1298,1294],{},"When passing reference parameters to thread functions, use ",[18,1299,1300],{},"std::ref",[653,1302,1303],{},"Only when two time-consuming tasks proceed simultaneously can one intuitively see the value of concurrency.",[1305,1306,1307],"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 .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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":61,"searchDepth":79,"depth":79,"links":1309},[1310,1311,1315,1316],{"id":12,"depth":79,"text":13},{"id":41,"depth":79,"text":42,"children":1312},[1313,1314],{"id":46,"depth":87,"text":47},{"id":644,"depth":87,"text":645},{"id":1100,"depth":79,"text":1101},{"id":1272,"depth":79,"text":1273},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0100-std-thread","2000-1900-0100","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-0100-std-thread",false,null,"en-US","en-us",{},{"title":5,"description":61},"\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","0qtqbNom3m6RoY7pHlSCWQlYvzc95yJcs8SYlQKL93s",[1336,1342,1347,1352,1357,1362,1367,1372,1377,1382,1387,1392,1397,1402,1407,1412,1417,1422,1427,1432,1437,1442,1447,1452,1457,1462,1467,1472,1477,1482,1487,1492,1497,1502,1507,1512,1517,1522,1527,1532,1536,1541,1546,1551,1556,1561,1566,1571,1576,1581,1586,1591,1596,1601,1606,1611,1612,1617,1622,1627,1632,1637,1642,1647,1652,1657,1662,1667,1672,1677,1682,1687,1692,1697,1702,1707,1712,1717,1722,1727,1732,1737],{"path":1337,"stem":1338,"title":1339,"date":1319,"chapterOrder":1340,"chapterDepth":1341,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1343,"stem":1344,"title":1345,"date":1319,"chapterOrder":1346,"chapterDepth":1341,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1348,"stem":1349,"title":1350,"date":1319,"chapterOrder":1351,"chapterDepth":1341,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1353,"stem":1354,"title":1355,"date":1319,"chapterOrder":1356,"chapterDepth":1341,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1358,"stem":1359,"title":1360,"date":1319,"chapterOrder":1361,"chapterDepth":1341,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1363,"stem":1364,"title":1365,"date":1319,"chapterOrder":1366,"chapterDepth":1341,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1368,"stem":1369,"title":1370,"date":1319,"chapterOrder":1371,"chapterDepth":1341,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0700-shu-zu","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0700-数组","array","0700",{"path":1373,"stem":1374,"title":1375,"date":1319,"chapterOrder":1376,"chapterDepth":1341,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1378,"stem":1379,"title":1380,"date":1319,"chapterOrder":1381,"chapterDepth":1341,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0900-zhi-zhen","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0900-指针","pointer","0900",{"path":1383,"stem":1384,"title":1385,"date":1319,"chapterOrder":1386,"chapterDepth":1341,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1388,"stem":1389,"title":1390,"date":1319,"chapterOrder":1391,"chapterDepth":1341,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1393,"stem":1394,"title":1395,"date":1319,"chapterOrder":1396,"chapterDepth":1341,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1200-yin-yong","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1200-引用","reference","1200",{"path":1398,"stem":1399,"title":1400,"date":1319,"chapterOrder":1401,"chapterDepth":1341,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1403,"stem":1404,"title":1405,"date":1319,"chapterOrder":1406,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1408,"stem":1409,"title":1410,"date":1319,"chapterOrder":1411,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1413,"stem":1414,"title":1415,"date":1319,"chapterOrder":1416,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1418,"stem":1419,"title":1420,"date":1319,"chapterOrder":1421,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1423,"stem":1424,"title":1425,"date":1319,"chapterOrder":1426,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1428,"stem":1429,"title":1430,"date":1319,"chapterOrder":1431,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1433,"stem":1434,"title":1435,"date":1319,"chapterOrder":1436,"chapterDepth":1341,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1438,"stem":1439,"title":1440,"date":1319,"chapterOrder":1441,"chapterDepth":1341,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1443,"stem":1444,"title":1445,"date":1319,"chapterOrder":1446,"chapterDepth":1341,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1448,"stem":1449,"title":1450,"date":1319,"chapterOrder":1451,"chapterDepth":1341,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1700-mu-ban","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1700-模板","template","1700",{"path":1453,"stem":1454,"title":1455,"date":1319,"chapterOrder":1456,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1458,"stem":1459,"title":1460,"date":1319,"chapterOrder":1461,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1463,"stem":1464,"title":1465,"date":1319,"chapterOrder":1466,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1468,"stem":1469,"title":1470,"date":1319,"chapterOrder":1471,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1473,"stem":1474,"title":1475,"date":1319,"chapterOrder":1476,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1478,"stem":1479,"title":1480,"date":1319,"chapterOrder":1481,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1483,"stem":1484,"title":1485,"date":1319,"chapterOrder":1486,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1488,"stem":1489,"title":1490,"date":1319,"chapterOrder":1491,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1493,"stem":1494,"title":1495,"date":1319,"chapterOrder":1496,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1498,"stem":1499,"title":1500,"date":1319,"chapterOrder":1501,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1503,"stem":1504,"title":1505,"date":1319,"chapterOrder":1506,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1508,"stem":1509,"title":1510,"date":1319,"chapterOrder":1511,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1513,"stem":1514,"title":1515,"date":1319,"chapterOrder":1516,"chapterDepth":1341,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1518,"stem":1519,"title":1520,"date":1319,"chapterOrder":1521,"chapterDepth":1341,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1523,"stem":1524,"title":1525,"date":1319,"chapterOrder":1526,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1528,"stem":1529,"title":1530,"date":1319,"chapterOrder":1531,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1533,"stem":1534,"title":691,"date":1319,"chapterOrder":1535,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0300-using","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0300-using","2000-0300",{"path":1537,"stem":1538,"title":1539,"date":1319,"chapterOrder":1540,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1542,"stem":1543,"title":1544,"date":1319,"chapterOrder":1545,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1547,"stem":1548,"title":1549,"date":1319,"chapterOrder":1550,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1552,"stem":1553,"title":1554,"date":1319,"chapterOrder":1555,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1557,"stem":1558,"title":1559,"date":1319,"chapterOrder":1560,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1562,"stem":1563,"title":1564,"date":1319,"chapterOrder":1565,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1567,"stem":1568,"title":1569,"date":1319,"chapterOrder":1570,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1572,"stem":1573,"title":1574,"date":1319,"chapterOrder":1575,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1577,"stem":1578,"title":1579,"date":1319,"chapterOrder":1580,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1582,"stem":1583,"title":1584,"date":1319,"chapterOrder":1585,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1587,"stem":1588,"title":1589,"date":1319,"chapterOrder":1590,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1592,"stem":1593,"title":1594,"date":1319,"chapterOrder":1595,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1597,"stem":1598,"title":1599,"date":1319,"chapterOrder":1600,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1602,"stem":1603,"title":1604,"date":1319,"chapterOrder":1605,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1607,"stem":1608,"title":1609,"date":1319,"chapterOrder":1610,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1317,"stem":1333,"title":5,"date":1319,"chapterOrder":1318,"chapterDepth":79,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},{"path":1613,"stem":1614,"title":1615,"date":1319,"chapterOrder":1616,"chapterDepth":79,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1618,"stem":1619,"title":1620,"date":1319,"chapterOrder":1621,"chapterDepth":79,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\u002Fen-us\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","std::atomic","2000-1900-0300",{"path":1623,"stem":1624,"title":1625,"date":1319,"chapterOrder":1626,"chapterDepth":79,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1628,"stem":1629,"title":1630,"date":1319,"chapterOrder":1631,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1633,"stem":1634,"title":1635,"date":1319,"chapterOrder":1636,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1638,"stem":1639,"title":1640,"date":1319,"chapterOrder":1641,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1643,"stem":1644,"title":1645,"date":1319,"chapterOrder":1646,"chapterDepth":1341,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1648,"stem":1649,"title":1650,"date":1319,"chapterOrder":1651,"chapterDepth":79,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1653,"stem":1654,"title":1655,"date":1319,"chapterOrder":1656,"chapterDepth":79,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1658,"stem":1659,"title":1660,"date":1319,"chapterOrder":1661,"chapterDepth":79,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1663,"stem":1664,"title":1665,"date":1319,"chapterOrder":1666,"chapterDepth":79,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1668,"stem":1669,"title":1670,"date":1319,"chapterOrder":1671,"chapterDepth":79,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1673,"stem":1674,"title":1675,"date":1319,"chapterOrder":1676,"chapterDepth":79,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1678,"stem":1679,"title":1680,"date":1319,"chapterOrder":1681,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1683,"stem":1684,"title":1685,"date":1319,"chapterOrder":1686,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1688,"stem":1689,"title":1690,"date":1319,"chapterOrder":1691,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1693,"stem":1694,"title":1695,"date":1319,"chapterOrder":1696,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1698,"stem":1699,"title":1700,"date":1319,"chapterOrder":1701,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1703,"stem":1704,"title":1705,"date":1319,"chapterOrder":1706,"chapterDepth":1341,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1708,"stem":1709,"title":1710,"date":1319,"chapterOrder":1711,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1713,"stem":1714,"title":1715,"date":1319,"chapterOrder":1716,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1718,"stem":1719,"title":1720,"date":1319,"chapterOrder":1721,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1723,"stem":1724,"title":1725,"date":1319,"chapterOrder":1726,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1728,"stem":1729,"title":1730,"date":1319,"chapterOrder":1731,"chapterDepth":68,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1733,"stem":1734,"title":1735,"date":1319,"chapterOrder":1736,"chapterDepth":1341,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":1326},"\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":1322,"stem":1738,"title":1739,"date":1319,"chapterOrder":1327,"chapterDepth":1341,"docKey":1321,"docRoot":1322,"docTitle":1323,"isWikiDoc":106,"isWikiIndex":106},"_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002Findex","C\u002FC++ tutorial",{"variants":1741},[1742,1743,1746,1749,1752],{"path":1317,"localeSlug":1329,"i18nKey":1325},{"path":1744,"localeSlug":1745,"i18nKey":1325},"\u002Fzh-hant\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0100-std-thread","zh-hant",{"path":1747,"localeSlug":1748,"i18nKey":1325},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0100-std-thread","zh-hk",{"path":1750,"localeSlug":1751,"i18nKey":1325},"\u002Fzh-tw\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0100-std-thread","zh-tw",{"path":1753,"localeSlug":1754,"i18nKey":1325},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0100-std-thread","zh-cn",[1317,1332,1744,1332,1747,1332,1750,1332,1753,1332],1784646869741]