[{"data":1,"prerenderedAt":1538},["ShallowReactive",2],{"wiki-page-\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-1000-bing-fa-bian-cheng":3,"wiki-doc-items-2023-10-05-cplusplus-jiao-xue":980,"wiki:author-members":1526},{"id":4,"title":5,"authors":6,"body":8,"chapterDepth":179,"chapterOrder":967,"date":968,"description":969,"docKey":970,"docRoot":971,"docTitle":972,"extension":973,"isWikiDoc":182,"isWikiIndex":974,"meta":975,"navigation":182,"path":976,"seo":977,"stem":978,"wikiDepth":158,"__hash__":979},"wiki\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-1000-并发编程.md","并发编程",[7],"董佳辉",{"type":9,"value":10,"toc":958},"minimark",[11,39,42,67,70,74,120,123,127,135,142,145,218,224,227,254,257,260,401,404,407,711,714,717,720,751,765,773,776,843,846,849,951,954],[12,13,14,15,19,20,19,23,19,26,19,29,19,32,19,35,38],"p",{},"C++11 开始，标准库正式提供线程、互斥量、条件变量、原子操作和异步任务等并发工具。到了 C++17、C++20，又继续增加了 ",[16,17,18],"code",{},"std::scoped_lock","、",[16,21,22],{},"std::shared_mutex",[16,24,25],{},"std::jthread",[16,27,28],{},"std::stop_token",[16,30,31],{},"std::latch",[16,33,34],{},"std::barrier",[16,36,37],{},"std::semaphore"," 等能力。",[12,40,41],{},"并发编程真正困难的地方并不是“创建一个线程”，而是下面几个问题：",[43,44,45,49,52,55,58,61,64],"ol",{},[46,47,48],"li",{},"线程什么时候开始、什么时候结束，谁负责等待它？",[46,50,51],{},"线程函数拿到的参数是副本、引用还是指针？对象会不会提前销毁？",[46,53,54],{},"多个线程同时访问同一份数据时，怎样避免数据竞争？",[46,56,57],{},"多把锁同时使用时，怎样避免死锁？",[46,59,60],{},"一个线程没有工作时，怎样高效等待，而不是一直循环占用 CPU？",[46,62,63],{},"一个任务将在未来产生结果时，怎样取得它的返回值或异常？",[46,65,66],{},"程序退出时，怎样让后台线程安全停止？",[12,68,69],{},"本章按照这些问题逐步展开。",[71,72,73],"h2",{"id":73},"并发与并行",[75,76,77,94],"table",{},[78,79,80],"thead",{},[81,82,83,88,91],"tr",{},[84,85,87],"th",{"align":86},"left","概念",[84,89,90],{"align":86},"含义",[84,92,93],{"align":86},"典型情况",[95,96,97,109],"tbody",{},[81,98,99,103,106],{},[100,101,102],"td",{"align":86},"并发（concurrency）",[100,104,105],{"align":86},"多个任务在同一段时间内推进",[100,107,108],{"align":86},"单核 CPU 在多个线程之间切换；程序同时等待多个 IO",[81,110,111,114,117],{},[100,112,113],{"align":86},"并行（parallelism）",[100,115,116],{"align":86},"多个任务在同一时刻真正执行",[100,118,119],{"align":86},"多核 CPU 上多个线程同时计算",[12,121,122],{},"并发是一种程序组织方式，并行是一种实际执行状态。并发程序不一定并行，但并行执行通常建立在并发任务之上。",[71,124,126],{"id":125},"线程安全最先要理解数据竞争","线程安全最先要理解：数据竞争",[12,128,129,130,134],{},"如果两个线程同时访问同一个内存位置，并且至少有一个线程在写，而这些访问之间又没有正确同步，就可能产生 ",[131,132,133],"strong",{},"data race（数据竞争）","。",[12,136,137,138,141],{},"在 C++ 内存模型中，数据竞争通常意味着 ",[131,139,140],{},"未定义行为（undefined behavior）","，并不是简单的“最后结果偶尔少加几次”。编译器可以在未定义行为前提下做出很多看起来反直觉的优化。",[12,143,144],{},"例如：",[146,147,152],"pre",{"className":148,"code":149,"language":150,"meta":151,"style":151},"language-cpp shiki shiki-themes github-light github-dark","int counter = 0;\n\nvoid work()\n{\n    ++counter;\n}\n","cpp","",[16,153,154,177,184,197,203,212],{"__ignoreMap":151},[155,156,159,163,167,170,174],"span",{"class":157,"line":158},"line",1,[155,160,162],{"class":161},"szBVR","int",[155,164,166],{"class":165},"sVt8B"," counter ",[155,168,169],{"class":161},"=",[155,171,173],{"class":172},"sj4cs"," 0",[155,175,176],{"class":165},";\n",[155,178,180],{"class":157,"line":179},2,[155,181,183],{"emptyLinePlaceholder":182},true,"\n",[155,185,187,190,194],{"class":157,"line":186},3,[155,188,189],{"class":161},"void",[155,191,193],{"class":192},"sScJk"," work",[155,195,196],{"class":165},"()\n",[155,198,200],{"class":157,"line":199},4,[155,201,202],{"class":165},"{\n",[155,204,206,209],{"class":157,"line":205},5,[155,207,208],{"class":161},"    ++",[155,210,211],{"class":165},"counter;\n",[155,213,215],{"class":157,"line":214},6,[155,216,217],{"class":165},"}\n",[12,219,220,223],{},[16,221,222],{},"++counter"," 并不等于“天然不可分割的一条操作”。它通常包含读取、计算和写回。多个线程交错执行时就可能丢失更新。",[12,225,226],{},"常见解决方案包括：",[228,229,230,237,244,247],"ul",{},[46,231,232,233,236],{},"用 ",[16,234,235],{},"std::mutex"," 保护一段共享状态；",[46,238,239,240,243],{},"对简单独立变量使用 ",[16,241,242],{},"std::atomic","；",[46,245,246],{},"尽量减少共享可变状态，让每个线程处理自己的数据；",[46,248,249,250,253],{},"需要等待某个条件时使用 ",[16,251,252],{},"std::condition_variable","，而不是不断轮询。",[71,255,256],{"id":256},"学习路线",[12,258,259],{},"本节拆成以下子章节：",[75,261,262,275],{},[78,263,264],{},[81,265,266,269,272],{},[84,267,268],{"align":86},"顺序",[84,270,271],{"align":86},"章节",[84,273,274],{"align":86},"重点",[95,276,277,300,325,343,356,375,388],{},[81,278,279,282,287],{},[100,280,281],{"align":86},"1",[100,283,284],{"align":86},[16,285,286],{},"std::thread",[100,288,289,290,19,293,19,296,299],{"align":86},"线程创建、可调用对象、参数传递、",[16,291,292],{},"join()",[16,294,295],{},"detach()",[16,297,298],{},"joinable()","、移动语义、线程生命周期",[81,301,302,305,311],{},[100,303,304],{"align":86},"2",[100,306,307,310],{"align":86},[16,308,309],{},"mutex"," 与 RAII 锁",[100,312,313,19,315,19,318,19,321,324],{"align":86},[16,314,309],{},[16,316,317],{},"lock_guard",[16,319,320],{},"unique_lock",[16,322,323],{},"scoped_lock","、死锁、读写锁、一次初始化",[81,326,327,330,334],{},[100,328,329],{"align":86},"3",[100,331,332],{"align":86},[16,333,242],{},[100,335,336,339,340],{"align":86},[16,337,338],{},"load\u002Fstore","、原子读改写、CAS、内存序基础、C++20 ",[16,341,342],{},"wait\u002Fnotify",[81,344,345,348,353],{},[100,346,347],{"align":86},"4",[100,349,350],{"align":86},[16,351,352],{},"condition_variable",[100,354,355],{"align":86},"等待\u002F通知、谓词、虚假唤醒、超时等待、生产者消费者",[81,357,358,361,366],{},[100,359,360],{"align":86},"5",[100,362,363],{"align":86},[16,364,365],{},"future \u002F async \u002F promise",[100,367,368,369,19,372],{"align":86},"异步任务返回值、异常传播、",[16,370,371],{},"packaged_task",[16,373,374],{},"shared_future",[81,376,377,380,385],{},[100,378,379],{"align":86},"6",[100,381,382],{"align":86},[16,383,384],{},"jthread \u002F stop_token",[100,386,387],{"align":86},"C++20 自动 join、协作式停止、线程退出设计",[81,389,390,393,398],{},[100,391,392],{"align":86},"7",[100,394,395],{"align":86},[16,396,397],{},"semaphore \u002F latch \u002F barrier",[100,399,400],{"align":86},"C++20 许可计数、一次性会合、可重复阶段同步",[12,402,403],{},"建议严格按顺序学习。后面的章节会默认已经理解前面的生命周期、RAII 和同步概念。",[71,405,406],{"id":406},"常用并发工具总览",[75,408,409,426],{},[78,410,411],{},[81,412,413,416,420,423],{},[84,414,415],{"align":86},"工具",[84,417,419],{"align":418},"center","标准",[84,421,422],{"align":86},"作用",[84,424,425],{"align":86},"头文件",[95,427,428,445,461,477,493,509,525,541,558,575,591,611,630,646,662,679,695],{},[81,429,430,434,437,440],{},[100,431,432],{"align":86},[16,433,286],{},[100,435,436],{"align":418},"C++11",[100,438,439],{"align":86},"创建和管理线程",[100,441,442],{"align":86},[16,443,444],{},"\u003Cthread>",[81,446,447,451,453,456],{},[100,448,449],{"align":86},[16,450,235],{},[100,452,436],{"align":418},[100,454,455],{"align":86},"互斥访问共享状态",[100,457,458],{"align":86},[16,459,460],{},"\u003Cmutex>",[81,462,463,468,470,473],{},[100,464,465],{"align":86},[16,466,467],{},"std::lock_guard",[100,469,436],{"align":418},[100,471,472],{"align":86},"简单 RAII 加锁",[100,474,475],{"align":86},[16,476,460],{},[81,478,479,484,486,489],{},[100,480,481],{"align":86},[16,482,483],{},"std::unique_lock",[100,485,436],{"align":418},[100,487,488],{"align":86},"可手动解锁、延迟加锁、可移动的 RAII 锁",[100,490,491],{"align":86},[16,492,460],{},[81,494,495,499,502,505],{},[100,496,497],{"align":86},[16,498,18],{},[100,500,501],{"align":418},"C++17",[100,503,504],{"align":86},"同时管理一把或多把锁",[100,506,507],{"align":86},[16,508,460],{},[81,510,511,515,517,520],{},[100,512,513],{"align":86},[16,514,22],{},[100,516,501],{"align":418},[100,518,519],{"align":86},"多读单写",[100,521,522],{"align":86},[16,523,524],{},"\u003Cshared_mutex>",[81,526,527,531,533,536],{},[100,528,529],{"align":86},[16,530,252],{},[100,532,436],{"align":418},[100,534,535],{"align":86},"等待共享条件变化",[100,537,538],{"align":86},[16,539,540],{},"\u003Ccondition_variable>",[81,542,543,548,550,553],{},[100,544,545],{"align":86},[16,546,547],{},"std::atomic\u003CT>",[100,549,436],{"align":418},[100,551,552],{"align":86},"对单个对象执行原子操作",[100,554,555],{"align":86},[16,556,557],{},"\u003Catomic>",[81,559,560,565,567,570],{},[100,561,562],{"align":86},[16,563,564],{},"std::future",[100,566,436],{"align":418},[100,568,569],{"align":86},"接收未来产生的结果",[100,571,572],{"align":86},[16,573,574],{},"\u003Cfuture>",[81,576,577,582,584,587],{},[100,578,579],{"align":86},[16,580,581],{},"std::async",[100,583,436],{"align":418},[100,585,586],{"align":86},"以任务形式异步执行函数",[100,588,589],{"align":86},[16,590,574],{},[81,592,593,598,600,607],{},[100,594,595],{"align":86},[16,596,597],{},"std::promise",[100,599,436],{"align":418},[100,601,602,603,606],{"align":86},"主动向 ",[16,604,605],{},"future"," 写入结果或异常",[100,608,609],{"align":86},[16,610,574],{},[81,612,613,618,620,626],{},[100,614,615],{"align":86},[16,616,617],{},"std::packaged_task",[100,619,436],{"align":418},[100,621,622,623,625],{"align":86},"把可调用对象包装成可产生 ",[16,624,605],{}," 的任务",[100,627,628],{"align":86},[16,629,574],{},[81,631,632,636,639,642],{},[100,633,634],{"align":86},[16,635,25],{},[100,637,638],{"align":418},"C++20",[100,640,641],{"align":86},"析构时自动请求停止并等待线程结束",[100,643,644],{"align":86},[16,645,444],{},[81,647,648,652,654,657],{},[100,649,650],{"align":86},[16,651,28],{},[100,653,638],{"align":418},[100,655,656],{"align":86},"协作式停止请求",[100,658,659],{"align":86},[16,660,661],{},"\u003Cstop_token>",[81,663,664,669,671,674],{},[100,665,666],{"align":86},[16,667,668],{},"std::counting_semaphore",[100,670,638],{"align":418},[100,672,673],{"align":86},"计数信号量",[100,675,676],{"align":86},[16,677,678],{},"\u003Csemaphore>",[81,680,681,685,687,690],{},[100,682,683],{"align":86},[16,684,31],{},[100,686,638],{"align":418},[100,688,689],{"align":86},"一次性计数同步点",[100,691,692],{"align":86},[16,693,694],{},"\u003Clatch>",[81,696,697,701,703,706],{},[100,698,699],{"align":86},[16,700,34],{},[100,702,638],{"align":418},[100,704,705],{"align":86},"可重复阶段同步点",[100,707,708],{"align":86},[16,709,710],{},"\u003Cbarrier>",[12,712,713],{},"后三种 C++20 同步工具在普通业务代码里没有前几项常用，因此应先把核心并发模型学扎实，再按实际需求使用。",[71,715,716],{"id":716},"编译",[12,718,719],{},"GCC \u002F Clang 在 Linux 上使用标准线程库时通常需要链接 pthread：",[146,721,725],{"className":722,"code":723,"language":724,"meta":151,"style":151},"language-bash shiki shiki-themes github-light github-dark","g++ demo.cpp -std=c++23 -pthread -O2 -Wall -Wextra\n","bash",[16,726,727],{"__ignoreMap":151},[155,728,729,732,736,739,742,745,748],{"class":157,"line":158},[155,730,731],{"class":192},"g++",[155,733,735],{"class":734},"sZZnC"," demo.cpp",[155,737,738],{"class":172}," -std=c++23",[155,740,741],{"class":172}," -pthread",[155,743,744],{"class":172}," -O2",[155,746,747],{"class":172}," -Wall",[155,749,750],{"class":172}," -Wextra\n",[12,752,753,754,19,757,760,761,764],{},"本章节示例统一使用 C++23 的 ",[16,755,756],{},"\u003Cprint>",[16,758,759],{},"std::print()"," 和 ",[16,762,763],{},"std::println()"," 写终端输出；并发工具本身的标准版本仍以各节说明为准。",[12,766,767,770,771,134],{},[16,768,769],{},"-pthread"," 不只是简单添加一个库，它还可能影响编译阶段与线程相关的宏和选项，因此通常应直接使用 ",[16,772,769],{},[71,774,775],{"id":775},"并发代码的基本原则",[43,777,778,784,790,803,809,815,823,834],{},[46,779,780,783],{},[131,781,782],{},"先保证正确，再讨论性能。"," 一个存在数据竞争的程序即使“跑起来很快”也没有意义。",[46,785,786,789],{},[131,787,788],{},"优先减少共享状态。"," 不共享就不需要同步。",[46,791,792,795,796,799,800,134],{},[131,793,794],{},"锁要由 RAII 对象管理。"," 除非确有必要，不要手写成对的 ",[16,797,798],{},"lock()"," \u002F ",[16,801,802],{},"unlock()",[46,804,805,808],{},[131,806,807],{},"锁保护的是不变量，不只是某一行代码。"," 如果几个成员必须保持一致，应由同一把锁共同保护。",[46,810,811,814],{},[131,812,813],{},"不要持锁执行耗时操作。"," 网络、文件 IO、休眠、大量计算通常应放在临界区外。",[46,816,817,822],{},[131,818,819,820,134],{},"不要轻易 ",[16,821,295],{}," 脱离线程很容易制造生命周期问题。",[46,824,825,828,829,831,832,134],{},[131,826,827],{},"线程停止应该有明确协议。"," C++20 优先了解 ",[16,830,25],{}," + ",[16,833,28],{},[46,835,836,842],{},[131,837,838,841],{},[16,839,840],{},"atomic"," 不等于“永远无锁”。"," 它保证操作的原子语义，但具体实现是否 lock-free 与类型和平台有关。",[71,844,845],{"id":845},"推荐掌握程度",[12,847,848],{},"学习完本章后，至少应该能够回答：",[228,850,851,857,868,873,882,889,898,907,910,918,921,929,939],{},[46,852,853,856],{},[16,854,855],{},"std::thread t(f, a, b)"," 中第一个参数和后面的参数分别是什么？",[46,858,859,860,863,864,867],{},"为什么给 ",[16,861,862],{},"T&"," 形参传线程参数时常需要 ",[16,865,866],{},"std::ref()","？",[46,869,870,872],{},[16,871,298],{}," 到底判断“线程是否还在运行”，还是判断“线程对象是否仍关联执行线程”？",[46,874,875,876,878,879,867],{},"为什么一个已经执行完函数的 ",[16,877,286],{}," 仍可能 ",[16,880,881],{},"joinable() == true",[46,883,884,760,886,888],{},[16,885,292],{},[16,887,295],{}," 对线程对象状态有什么影响？",[46,890,891,892,894,895,867],{},"为什么 joinable 的 ",[16,893,286],{}," 析构会 ",[16,896,897],{},"std::terminate()",[46,899,900,19,902,19,904,906],{},[16,901,317],{},[16,903,320],{},[16,905,323],{}," 分别适合什么场景？",[46,908,909],{},"两把互斥量为什么会产生死锁，怎样避免？",[46,911,912,914,915,917],{},[16,913,840],{}," 与 ",[16,916,309],{}," 应该怎样选择？",[46,919,920],{},"为什么条件变量必须围绕“共享状态 + mutex + 谓词”使用？",[46,922,923,760,925,928],{},[16,924,605],{},[16,926,927],{},"promise"," 分别站在结果通道的哪一端？",[46,930,931,934,935,938],{},[16,932,933],{},"jthread"," 相比 ",[16,936,937],{},"thread"," 解决了哪些生命周期问题？",[46,940,941,19,944,19,947,950],{},[16,942,943],{},"semaphore",[16,945,946],{},"latch",[16,948,949],{},"barrier"," 分别对应什么同步模式？",[12,952,953],{},"如果这些问题能够清楚回答，才算真正掌握了标准库并发基础。",[955,956,957],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}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 .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":151,"searchDepth":179,"depth":179,"links":959},[960,961,962,963,964,965,966],{"id":73,"depth":179,"text":73},{"id":125,"depth":179,"text":126},{"id":256,"depth":179,"text":256},{"id":406,"depth":179,"text":406},{"id":716,"depth":179,"text":716},{"id":775,"depth":179,"text":775},{"id":845,"depth":179,"text":845},"2000-1900-1000","2023-10-05","C++11 开始，标准库正式提供线程、互斥量、条件变量、原子操作和异步任务等并发工具。到了 C++17、C++20，又继续增加了 std::scoped_lock、std::shared_mutex、std::jthread、std::stop_token、std::latch、std::barrier、std::semaphore 等能力。","2023-10-05-cplusplus-jiao-xue","\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue","Cplusplus教学","md",false,{},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-1000-bing-fa-bian-cheng",{"title":5,"description":969},"wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-1000-并发编程","twZvkj8KOwZ_dWKFitAJz36KBPuYQ1Qs5WN1T_grbYQ",[981,988,994,1000,1006,1012,1018,1024,1030,1036,1042,1048,1054,1060,1066,1072,1078,1084,1090,1096,1102,1108,1114,1120,1126,1132,1138,1144,1150,1156,1162,1168,1174,1180,1186,1192,1198,1204,1210,1216,1222,1228,1234,1240,1246,1252,1258,1264,1270,1276,1282,1288,1294,1300,1306,1312,1318,1324,1330,1336,1342,1344,1349,1355,1360,1365,1371,1377,1383,1389,1395,1401,1407,1413,1419,1425,1431,1437,1443,1449,1455,1461,1467,1473,1479,1485,1491,1497,1503,1509,1515,1521],{"path":982,"stem":983,"title":984,"authors":985,"date":968,"chapterOrder":986,"chapterDepth":987,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0100-c-kai-fa-huan-jing-da-jian-yu-ce-shi","wiki\u002F2023-10-05-Cplusplus教学\u002F0100-C++开发环境搭建与测试","C++开发环境搭建与测试",[7],"0100",0,{"path":989,"stem":990,"title":991,"authors":992,"date":968,"chapterOrder":993,"chapterDepth":987,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0200-c-ji-chu-chu-shi","wiki\u002F2023-10-05-Cplusplus教学\u002F0200-C++基础初识","C++基础初识",[7],"0200",{"path":995,"stem":996,"title":997,"authors":998,"date":968,"chapterOrder":999,"chapterDepth":987,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0300-shu-ju-lei-xing-yu-shu-ju-cun-fang","wiki\u002F2023-10-05-Cplusplus教学\u002F0300-数据类型与数据存放","数据类型与数据存放",[7],"0300",{"path":1001,"stem":1002,"title":1003,"authors":1004,"date":968,"chapterOrder":1005,"chapterDepth":987,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0400-shu-ru-shu-chu","wiki\u002F2023-10-05-Cplusplus教学\u002F0400-输入输出","输入输出",[7],"0400",{"path":1007,"stem":1008,"title":1009,"authors":1010,"date":968,"chapterOrder":1011,"chapterDepth":987,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0500-yun-suan-fu","wiki\u002F2023-10-05-Cplusplus教学\u002F0500-运算符","运算符",[7],"0500",{"path":1013,"stem":1014,"title":1015,"authors":1016,"date":968,"chapterOrder":1017,"chapterDepth":987,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0600-cheng-xu-liu-cheng-jie-gou","wiki\u002F2023-10-05-Cplusplus教学\u002F0600-程序流程结构","程序流程结构",[7],"0600",{"path":1019,"stem":1020,"title":1021,"authors":1022,"date":968,"chapterOrder":1023,"chapterDepth":987,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0700-shu-zu","wiki\u002F2023-10-05-Cplusplus教学\u002F0700-数组","数组",[7],"0700",{"path":1025,"stem":1026,"title":1027,"authors":1028,"date":968,"chapterOrder":1029,"chapterDepth":987,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0800-han-shu-yu-tou-wen-jian","wiki\u002F2023-10-05-Cplusplus教学\u002F0800-函数与头文件","函数与头文件",[7],"0800",{"path":1031,"stem":1032,"title":1033,"authors":1034,"date":968,"chapterOrder":1035,"chapterDepth":987,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0900-zhi-zhen","wiki\u002F2023-10-05-Cplusplus教学\u002F0900-指针","指针",[7],"0900",{"path":1037,"stem":1038,"title":1039,"authors":1040,"date":968,"chapterOrder":1041,"chapterDepth":987,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1000-jie-gou-ti-yu-gong-yong-ti","wiki\u002F2023-10-05-Cplusplus教学\u002F1000-结构体与共用体","结构体与共用体",[7],"1000",{"path":1043,"stem":1044,"title":1045,"authors":1046,"date":968,"chapterOrder":1047,"chapterDepth":987,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1100-nei-cun-fen-qu-yu-sheng-ming-zhou-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1100-内存分区与生命周期","内存分区与生命周期",[7],"1100",{"path":1049,"stem":1050,"title":1051,"authors":1052,"date":968,"chapterOrder":1053,"chapterDepth":987,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1200-yin-yong","wiki\u002F2023-10-05-Cplusplus教学\u002F1200-引用","引用",[7],"1200",{"path":1055,"stem":1056,"title":1057,"authors":1058,"date":968,"chapterOrder":1059,"chapterDepth":987,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1300-han-shu-ti-gao","wiki\u002F2023-10-05-Cplusplus教学\u002F1300-函数提高","函数提高",[7],"1300",{"path":1061,"stem":1062,"title":1063,"authors":1064,"date":968,"chapterOrder":1065,"chapterDepth":987,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1350-ming-ming-kong-jian","wiki\u002F2023-10-05-Cplusplus教学\u002F1350-命名空间","命名空间",[7],"1350",{"path":1067,"stem":1068,"title":1069,"authors":1070,"date":968,"chapterOrder":1071,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0100-feng-zhuang","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0100-封装","封装",[7],"1400-0100",{"path":1073,"stem":1074,"title":1075,"authors":1076,"date":968,"chapterOrder":1077,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0200-dui-xiang-chu-shi-hua-he-qing-li","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0200-对象初始化和清理","对象初始化和清理",[7],"1400-0200",{"path":1079,"stem":1080,"title":1081,"authors":1082,"date":968,"chapterOrder":1083,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0300-dui-xiang-mo-xing-yu-this-zhi-zhen","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0300-对象模型与this指针","对象模型与this指针",[7],"1400-0300",{"path":1085,"stem":1086,"title":1087,"authors":1088,"date":968,"chapterOrder":1089,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0400-you-yuan-yu-yun-suan-fu-zhong-zai","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0400-友元与运算符重载","友元与运算符重载",[7],"1400-0400",{"path":1091,"stem":1092,"title":1093,"authors":1094,"date":968,"chapterOrder":1095,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0500-ji-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0500-继承","继承",[7],"1400-0500",{"path":1097,"stem":1098,"title":1099,"authors":1100,"date":968,"chapterOrder":1101,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0600-duo-tai","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0600-多态","多态",[7],"1400-0600",{"path":1103,"stem":1104,"title":1105,"authors":1106,"date":968,"chapterOrder":1107,"chapterDepth":987,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-lei-he-dui-xiang","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-类和对象","类和对象",[7],"1400",{"path":1109,"stem":1110,"title":1111,"authors":1112,"date":968,"chapterOrder":1113,"chapterDepth":987,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1450-han-shu-zhi-zhen","wiki\u002F2023-10-05-Cplusplus教学\u002F1450-函数指针","函数指针",[7],"1450",{"path":1115,"stem":1116,"title":1117,"authors":1118,"date":968,"chapterOrder":1119,"chapterDepth":987,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1500-wen-jian-cao-zuo","wiki\u002F2023-10-05-Cplusplus教学\u002F1500-文件操作","文件操作",[7],"1500",{"path":1121,"stem":1122,"title":1123,"authors":1124,"date":968,"chapterOrder":1125,"chapterDepth":987,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1600-yi-chang-chu-li-yu-cuo-wu-ma","wiki\u002F2023-10-05-Cplusplus教学\u002F1600-异常处理与错误码","异常处理",[7],"1600",{"path":1127,"stem":1128,"title":1129,"authors":1130,"date":968,"chapterOrder":1131,"chapterDepth":987,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1700-mu-ban","wiki\u002F2023-10-05-Cplusplus教学\u002F1700-模板","模板",[7],"1700",{"path":1133,"stem":1134,"title":1135,"authors":1136,"date":968,"chapterOrder":1137,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0100-stl-chu-shi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0100-STL初识","STL初识",[7],"1800-0100",{"path":1139,"stem":1140,"title":1141,"authors":1142,"date":968,"chapterOrder":1143,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0200-std-array","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0200-std-array","std::array",[7],"1800-0200",{"path":1145,"stem":1146,"title":1147,"authors":1148,"date":968,"chapterOrder":1149,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0300-string-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0300-string容器","string容器",[7],"1800-0300",{"path":1151,"stem":1152,"title":1153,"authors":1154,"date":968,"chapterOrder":1155,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0400-vector-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0400-vector容器","vector 容器",[7],"1800-0400",{"path":1157,"stem":1158,"title":1159,"authors":1160,"date":968,"chapterOrder":1161,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0500-deque-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0500-deque容器","deque 容器",[7],"1800-0500",{"path":1163,"stem":1164,"title":1165,"authors":1166,"date":968,"chapterOrder":1167,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0600-stack-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0600-stack容器","stack 容器",[7],"1800-0600",{"path":1169,"stem":1170,"title":1171,"authors":1172,"date":968,"chapterOrder":1173,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0700-queue-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0700-queue容器","queue 容器",[7],"1800-0700",{"path":1175,"stem":1176,"title":1177,"authors":1178,"date":968,"chapterOrder":1179,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0800-list-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0800-list容器","list 容器",[7],"1800-0800",{"path":1181,"stem":1182,"title":1183,"authors":1184,"date":968,"chapterOrder":1185,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0900-set-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0900-set容器","set \u002F multiset 容器",[7],"1800-0900",{"path":1187,"stem":1188,"title":1189,"authors":1190,"date":968,"chapterOrder":1191,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1000-map-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-1000-map容器","map \u002F multimap 容器",[7],"1800-1000",{"path":1193,"stem":1194,"title":1195,"authors":1196,"date":968,"chapterOrder":1197,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1100-han-shu-dui-xiang-yu-wei-ci","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-1100-函数对象与谓词","函数对象与谓词",[7],"1800-1100",{"path":1199,"stem":1200,"title":1201,"authors":1202,"date":968,"chapterOrder":1203,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1200-chang-yong-suan-fa","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-1200-常用算法","常用算法",[7],"1800-1200",{"path":1205,"stem":1206,"title":1207,"authors":1208,"date":968,"chapterOrder":1209,"chapterDepth":987,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-stl-ti-gao-bian-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-STL提高编程","STL提高编程",[7],"1800",{"path":1211,"stem":1212,"title":1213,"authors":1214,"date":968,"chapterOrder":1215,"chapterDepth":987,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1900-c-lei-xing-zhuan-huan","wiki\u002F2023-10-05-Cplusplus教学\u002F1900-C++类型转换","C++类型转换",[7],"1900",{"path":1217,"stem":1218,"title":1219,"authors":1220,"date":968,"chapterOrder":1221,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0100-auto","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0100-auto","auto",[7],"2000-0100",{"path":1223,"stem":1224,"title":1225,"authors":1226,"date":968,"chapterOrder":1227,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0200-nullptr","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0200-nullptr","nullptr",[7],"2000-0200",{"path":1229,"stem":1230,"title":1231,"authors":1232,"date":968,"chapterOrder":1233,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0300-using","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0300-using","using",[7],"2000-0300",{"path":1235,"stem":1236,"title":1237,"authors":1238,"date":968,"chapterOrder":1239,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0400-enum-class","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0400-enum-class","enum class",[7],"2000-0400",{"path":1241,"stem":1242,"title":1243,"authors":1244,"date":968,"chapterOrder":1245,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0500-fan-wei-for-xun-huan","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0500-范围for循环","范围 for 循环",[7],"2000-0500",{"path":1247,"stem":1248,"title":1249,"authors":1250,"date":968,"chapterOrder":1251,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0600-jie-gou-hua-bang-ding","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0600-结构化绑定","结构化绑定",[7],"2000-0600",{"path":1253,"stem":1254,"title":1255,"authors":1256,"date":968,"chapterOrder":1257,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0700-constexpr","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0700-constexpr","constexpr",[7],"2000-0700",{"path":1259,"stem":1260,"title":1261,"authors":1262,"date":968,"chapterOrder":1263,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0800-raii","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0800-RAII","RAII",[7],"2000-0800",{"path":1265,"stem":1266,"title":1267,"authors":1268,"date":968,"chapterOrder":1269,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0900-zhi-neng-zhi-zhen","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0900-智能指针","智能指针",[7],"2000-0900",{"path":1271,"stem":1272,"title":1273,"authors":1274,"date":968,"chapterOrder":1275,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1000-you-zhi-yin-yong-he-yi-dong-yu-yi","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1000-右值引用和移动语义","右值引用和移动语义",[7],"2000-1000",{"path":1277,"stem":1278,"title":1279,"authors":1280,"date":968,"chapterOrder":1281,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1100-lambda-biao-da-shi","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1100-Lambda表达式","Lambda 表达式",[7],"2000-1100",{"path":1283,"stem":1284,"title":1285,"authors":1286,"date":968,"chapterOrder":1287,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1200-std-function","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1200-std-function","std::function",[7],"2000-1200",{"path":1289,"stem":1290,"title":1291,"authors":1292,"date":968,"chapterOrder":1293,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1300-std-bind","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1300-std-bind","std::bind",[7],"2000-1300",{"path":1295,"stem":1296,"title":1297,"authors":1298,"date":968,"chapterOrder":1299,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1400-std-optional","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1400-std-optional","std::optional",[7],"2000-1400",{"path":1301,"stem":1302,"title":1303,"authors":1304,"date":968,"chapterOrder":1305,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1500-std-variant","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1500-std-variant","std::variant",[7],"2000-1500",{"path":1307,"stem":1308,"title":1309,"authors":1310,"date":968,"chapterOrder":1311,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1600-std-span","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1600-std-span","std::span",[7],"2000-1600",{"path":1313,"stem":1314,"title":1315,"authors":1316,"date":968,"chapterOrder":1317,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1700-std-format-print","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1700-std-format-print","std::format \u002F std::print",[7],"2000-1700",{"path":1319,"stem":1320,"title":1321,"authors":1322,"date":968,"chapterOrder":1323,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1800-std-chrono","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1800-std-chrono","std::chrono",[7],"2000-1800",{"path":1325,"stem":1326,"title":1327,"authors":1328,"date":968,"chapterOrder":1329,"chapterDepth":179,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0100-bing-fa-shi-shen-me","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0100-并发是什么","并发是什么",[7],"2000-1900-0100",{"path":1331,"stem":1332,"title":1333,"authors":1334,"date":968,"chapterOrder":1335,"chapterDepth":179,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0200-bing-xing-shi-shen-me","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0200-并行是什么","并行是什么",[7],"2000-1900-0200",{"path":1337,"stem":1338,"title":1339,"authors":1340,"date":968,"chapterOrder":1341,"chapterDepth":179,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0300-xie-cheng-shi-shen-me","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0300-协程是什么","协程是什么",[7],"2000-1900-0300",{"path":976,"stem":978,"title":5,"authors":1343,"date":968,"chapterOrder":967,"chapterDepth":179,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},[7],{"path":1345,"stem":1346,"title":286,"authors":1347,"date":968,"chapterOrder":1348,"chapterDepth":179,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-1100-std-thread","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-1100-std-thread",[7],"2000-1900-1100",{"path":1350,"stem":1351,"title":1352,"authors":1353,"date":968,"chapterOrder":1354,"chapterDepth":179,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-1200-mutex-lock-guard","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-1200-mutex-lock-guard","mutex 与 RAII 锁",[7],"2000-1900-1200",{"path":1356,"stem":1357,"title":242,"authors":1358,"date":968,"chapterOrder":1359,"chapterDepth":179,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-1300-std-atomic","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-1300-std-atomic",[7],"2000-1900-1300",{"path":1361,"stem":1362,"title":352,"authors":1363,"date":968,"chapterOrder":1364,"chapterDepth":179,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-1400-condition-variable","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-1400-condition-variable",[7],"2000-1900-1400",{"path":1366,"stem":1367,"title":1368,"authors":1369,"date":968,"chapterOrder":1370,"chapterDepth":179,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-1500-future-async-promise","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-1500-future-async-promise","future、async、promise 与 packaged_task",[7],"2000-1900-1500",{"path":1372,"stem":1373,"title":1374,"authors":1375,"date":968,"chapterOrder":1376,"chapterDepth":179,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-1600-jthread-stop-token","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-1600-jthread-stop-token","jthread 与 stop_token",[7],"2000-1900-1600",{"path":1378,"stem":1379,"title":1380,"authors":1381,"date":968,"chapterOrder":1382,"chapterDepth":179,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-1700-semaphore-latch-barrier","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-1700-semaphore-latch-barrier","semaphore、latch 与 barrier",[7],"2000-1900-1700",{"path":1384,"stem":1385,"title":1386,"authors":1387,"date":968,"chapterOrder":1388,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-bing-fa-bing-xing-yu-xie-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-并发并行与协程","并发、并行与协程",[7],"2000-1900",{"path":1390,"stem":1391,"title":1392,"authors":1393,"date":968,"chapterOrder":1394,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2000-std-filesystem","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-2000-std-filesystem","std::filesystem",[7],"2000-2000",{"path":1396,"stem":1397,"title":1398,"authors":1399,"date":968,"chapterOrder":1400,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2100-modules-jian-jie","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-2100-modules简介","modules 简介",[7],"2000-2100",{"path":1402,"stem":1403,"title":1404,"authors":1405,"date":968,"chapterOrder":1406,"chapterDepth":987,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-xian-dai-c","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-现代C++","现代C++",[7],"2000",{"path":1408,"stem":1409,"title":1410,"authors":1411,"date":968,"chapterOrder":1412,"chapterDepth":179,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0100-ding-shi-qi-yu-yi-bu-io","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0100-定时器与异步IO","定时器与异步 IO",[7],"2100-0100-0100",{"path":1414,"stem":1415,"title":1416,"authors":1417,"date":968,"chapterOrder":1418,"chapterDepth":179,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0200-boost-asio-ji-chu","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0200-Boost.Asio基础","Boost.Asio 基础",[7],"2100-0100-0200",{"path":1420,"stem":1421,"title":1422,"authors":1423,"date":968,"chapterOrder":1424,"chapterDepth":179,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0300-chuan-kou-tong-xin","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0300-串口通信","串口通信教学",[7],"2100-0100-0300",{"path":1426,"stem":1427,"title":1428,"authors":1429,"date":968,"chapterOrder":1430,"chapterDepth":179,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0350-chuan-kou-tong-xin-chuan-kou-bao-xie-yi-shi-li","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0350-串口通信串口包协议实例","串口通信串口包协议实例",[7],"2100-0100-0350",{"path":1432,"stem":1433,"title":1434,"authors":1435,"date":968,"chapterOrder":1436,"chapterDepth":179,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0400-tcp-tong-xin","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0400-TCP通信","TCP 通信",[7],"2100-0100-0400",{"path":1438,"stem":1439,"title":1440,"authors":1441,"date":968,"chapterOrder":1442,"chapterDepth":179,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0500-udp-tong-xin","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0500-UDP通信","UDP 通信",[7],"2100-0100-0500",{"path":1444,"stem":1445,"title":1446,"authors":1447,"date":968,"chapterOrder":1448,"chapterDepth":179,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0600-ji-qi-ren-gong-cheng-xie-fa-yu-ros2-ji-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0600-机器人工程写法与ROS2集成","机器人工程写法与 ROS2 集成",[7],"2100-0100-0600",{"path":1450,"stem":1451,"title":1452,"authors":1453,"date":968,"chapterOrder":1454,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-boost-asio-yi-bu-io-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-Boost.Asio异步IO库","Boost.Asio异步IO库",[7],"2100-0100",{"path":1456,"stem":1457,"title":1458,"authors":1459,"date":968,"chapterOrder":1460,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0200-eigen-xian-xing-dai-shu-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0200-Eigen线性代数库","Eigen线性代数库",[7],"2100-0200",{"path":1462,"stem":1463,"title":1464,"authors":1465,"date":968,"chapterOrder":1466,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0300-opencv-ji-suan-ji-shi-jue-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0300-OpenCV计算机视觉库","OpenCV计算机视觉库",[7],"2100-0300",{"path":1468,"stem":1469,"title":1470,"authors":1471,"date":968,"chapterOrder":1472,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0400-pcl-dian-yun-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0400-PCL点云库","PCL点云库",[7],"2100-0400",{"path":1474,"stem":1475,"title":1476,"authors":1477,"date":968,"chapterOrder":1478,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0500-sophus-li-qun-li-dai-shu-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0500-Sophus李群李代数库","Sophus 李群李代数库",[7],"2100-0500",{"path":1480,"stem":1481,"title":1482,"authors":1483,"date":968,"chapterOrder":1484,"chapterDepth":987,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-chang-yong-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-常用库","常用库学习",[7],"2100",{"path":1486,"stem":1487,"title":1488,"authors":1489,"date":968,"chapterOrder":1490,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0100-cmakepresets-yu-gou-jian-an-zhuang","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0100-CMakePresets与构建安装","CMakePresets与构建安装",[7],"2200-0100",{"path":1492,"stem":1493,"title":1494,"authors":1495,"date":968,"chapterOrder":1496,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0200-ding-ceng-cmake-yu-gong-gong-bian-yi-xuan-xiang","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0200-顶层CMake与公共编译选项","顶层CMake与公共编译选项",[7],"2200-0200",{"path":1498,"stem":1499,"title":1500,"authors":1501,"date":968,"chapterOrder":1502,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0300-src-yu-lib-mo-kuai-cmake-xiang-jie","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0300-src与lib模块CMake详解","src与lib模块CMake详解",[7],"2200-0300",{"path":1504,"stem":1505,"title":1506,"authors":1507,"date":968,"chapterOrder":1508,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0400-di-san-fang-ku-yi-lai-xie-fa","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0400-第三方库依赖写法","第三方库依赖写法",[7],"2200-0400",{"path":1510,"stem":1511,"title":1512,"authors":1513,"date":968,"chapterOrder":1514,"chapterDepth":158,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0500-mu-ban-kuo-zhan-yu-chang-jian-wen-ti","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0500-模板扩展与常见问题","模板扩展与常见问题",[7],"2200-0500",{"path":1516,"stem":1517,"title":1518,"authors":1519,"date":968,"chapterOrder":1520,"chapterDepth":987,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":974},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-cmake-gong-cheng-mu-ban","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-CMake工程模板","CMake工程模板",[7],"2200",{"path":971,"stem":1522,"title":1523,"authors":1524,"date":968,"chapterOrder":1525,"chapterDepth":987,"docKey":970,"docRoot":971,"docTitle":972,"isWikiDoc":182,"isWikiIndex":182},"wiki\u002F2023-10-05-Cplusplus教学\u002Findex","C\u002FC++教程",[7],null,[1527,1529,1532,1535],{"name":7,"image":1528},"\u002Fimages\u002Fmember_photo\u002F董佳辉.jpg",{"name":1530,"image":1531},"宫金良","\u002Fimages\u002Fmember_photo\u002F宫金良.jpg",{"name":1533,"image":1534},"巩丽","\u002Fimages\u002Fmember_photo\u002F巩丽.png",{"name":1536,"image":1537},"张彦斐","\u002Fimages\u002Fmember_photo\u002F张彦斐.jpg",1792431898939]