[{"data":1,"prerenderedAt":1406},["ShallowReactive",2],{"wiki-page-\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-boost-asio-yi-bu-io-ku":3,"wiki-doc-items-2023-10-05-cplusplus-jiao-xue":846,"wiki:author-members":1394},{"id":4,"title":5,"authors":6,"body":8,"chapterDepth":100,"chapterOrder":834,"date":835,"description":93,"docKey":836,"docRoot":837,"docTitle":838,"extension":839,"isWikiDoc":561,"isWikiIndex":840,"meta":841,"navigation":561,"path":842,"seo":843,"stem":844,"wikiDepth":100,"__hash__":845},"wiki\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-Boost.Asio异步IO库.md","Boost.Asio异步IO库",[7],"董佳辉",{"type":9,"value":10,"toc":817},"minimark",[11,27,30,34,37,75,77,80,84,87,141,144,197,200,229,235,238,273,276,320,323,407,410,437,440,444,447,473,480,482,486,489,497,500,602,605,611,614,620,622,625,629,662,666,695,698,701,729,732,738,740,743,746,778,780,784,813],[12,13,14],"blockquote",{},[15,16,17,18,21,22,26],"p",{},"本章面向机器人、ROS2、下位机串口、TCP\u002FUDP 通信学习。",[19,20],"br",{},"\n本教程刻意采用 ",[23,24,25],"code",{},"std::bind","，暂时不使用 lambda，方便初学者先把“回调函数、占位符、成员函数绑定、异步执行顺序”看清楚。",[28,29],"hr",{},[31,32,33],"h2",{"id":33},"本套教程的章节顺序",[15,35,36],{},"我把“定时器”提前，是因为定时器不依赖串口硬件、不依赖网络对端，最适合看清楚：",[38,39,40,47,53,56,59],"ol",{},[41,42,43,46],"li",{},[23,44,45],{},"io_context.run()"," 为什么会阻塞；",[41,48,49,52],{},[23,50,51],{},"async_wait()"," 为什么不是立刻执行回调；",[41,54,55],{},"一个 timer 和两个 timer 的区别；",[41,57,58],{},"回调函数到底在哪个线程里执行；",[41,60,61,63,64,67,68,67,71,74],{},[23,62,25],{}," 里的 ",[23,65,66],{},"_1","、",[23,69,70],{},"this",[23,72,73],{},"&Class::func"," 到底什么意思。",[28,76],{},[31,78,79],{"id":79},"本套教程统一约定",[81,82,83],"h3",{"id":83},"统一使用标准库写法",[15,85,86],{},"本教程尽量使用标准库：",[88,89,94],"pre",{"className":90,"code":91,"language":92,"meta":93,"style":93},"language-cpp shiki shiki-themes github-light github-dark","#include \u003Cchrono>\n#include \u003Cfunctional>\n#include \u003Cmemory>\n#include \u003Cthread>\n#include \u003Cstring>\n","cpp","",[23,95,96,109,117,125,133],{"__ignoreMap":93},[97,98,101,105],"span",{"class":99,"line":100},"line",1,[97,102,104],{"class":103},"szBVR","#include",[97,106,108],{"class":107},"sZZnC"," \u003Cchrono>\n",[97,110,112,114],{"class":99,"line":111},2,[97,113,104],{"class":103},[97,115,116],{"class":107}," \u003Cfunctional>\n",[97,118,120,122],{"class":99,"line":119},3,[97,121,104],{"class":103},[97,123,124],{"class":107}," \u003Cmemory>\n",[97,126,128,130],{"class":99,"line":127},4,[97,129,104],{"class":103},[97,131,132],{"class":107}," \u003Cthread>\n",[97,134,136,138],{"class":99,"line":135},5,[97,137,104],{"class":103},[97,139,140],{"class":107}," \u003Cstring>\n",[15,142,143],{},"例如定时器时间统一写：",[88,145,147],{"className":90,"code":146,"language":92,"meta":93,"style":93},"std::chrono::seconds(1)\nstd::chrono::milliseconds(100)\n",[23,148,149,177],{"__ignoreMap":93},[97,150,151,155,159,162,164,167,170,174],{"class":99,"line":100},[97,152,154],{"class":153},"sScJk","std",[97,156,158],{"class":157},"sVt8B","::",[97,160,161],{"class":153},"chrono",[97,163,158],{"class":157},[97,165,166],{"class":153},"seconds",[97,168,169],{"class":157},"(",[97,171,173],{"class":172},"sj4cs","1",[97,175,176],{"class":157},")\n",[97,178,179,181,183,185,187,190,192,195],{"class":99,"line":111},[97,180,154],{"class":153},[97,182,158],{"class":157},[97,184,161],{"class":153},[97,186,158],{"class":157},[97,188,189],{"class":153},"milliseconds",[97,191,169],{"class":157},[97,193,194],{"class":172},"100",[97,196,176],{"class":157},[15,198,199],{},"而不是优先写：",[88,201,203],{"className":90,"code":202,"language":92,"meta":93,"style":93},"boost::asio::chrono::seconds(1)\n",[23,204,205],{"__ignoreMap":93},[97,206,207,210,212,215,217,219,221,223,225,227],{"class":99,"line":100},[97,208,209],{"class":153},"boost",[97,211,158],{"class":157},[97,213,214],{"class":153},"asio",[97,216,158],{"class":157},[97,218,161],{"class":153},[97,220,158],{"class":157},[97,222,166],{"class":153},[97,224,169],{"class":157},[97,226,173],{"class":172},[97,228,176],{"class":157},[81,230,232,233],{"id":231},"回调统一使用-stdbind","回调统一使用 ",[23,234,25],{},[15,236,237],{},"本教程里异步回调尽量写成：",[88,239,241],{"className":90,"code":240,"language":92,"meta":93,"style":93},"timer.async_wait(std::bind(on_timer, std::placeholders::_1));\n",[23,242,243],{"__ignoreMap":93},[97,244,245,248,251,253,255,257,260,263,265,267,270],{"class":99,"line":100},[97,246,247],{"class":157},"timer.",[97,249,250],{"class":153},"async_wait",[97,252,169],{"class":157},[97,254,154],{"class":153},[97,256,158],{"class":157},[97,258,259],{"class":153},"bind",[97,261,262],{"class":157},"(on_timer, ",[97,264,154],{"class":153},[97,266,158],{"class":157},[97,268,269],{"class":153},"placeholders",[97,271,272],{"class":157},"::_1));\n",[15,274,275],{},"成员函数回调写成：",[88,277,279],{"className":90,"code":278,"language":92,"meta":93,"style":93},"timer_.async_wait(std::bind(&Printer::on_timer, this, std::placeholders::_1));\n",[23,280,281],{"__ignoreMap":93},[97,282,283,286,288,290,292,294,296,298,301,304,307,309,312,314,316,318],{"class":99,"line":100},[97,284,285],{"class":157},"timer_.",[97,287,250],{"class":153},[97,289,169],{"class":157},[97,291,154],{"class":153},[97,293,158],{"class":157},[97,295,259],{"class":153},[97,297,169],{"class":157},[97,299,300],{"class":103},"&",[97,302,303],{"class":153},"Printer",[97,305,306],{"class":157},"::on_timer, ",[97,308,70],{"class":172},[97,310,311],{"class":157},", ",[97,313,154],{"class":153},[97,315,158],{"class":157},[97,317,269],{"class":153},[97,319,272],{"class":157},[15,321,322],{},"读写回调有两个参数时写成：",[88,324,326],{"className":90,"code":325,"language":92,"meta":93,"style":93},"socket.async_read_some(\n    boost::asio::buffer(data_),\n    std::bind(&Session::on_read,\n              this,\n              std::placeholders::_1,\n              std::placeholders::_2));\n",[23,327,328,339,356,375,383,395],{"__ignoreMap":93},[97,329,330,333,336],{"class":99,"line":100},[97,331,332],{"class":157},"socket.",[97,334,335],{"class":153},"async_read_some",[97,337,338],{"class":157},"(\n",[97,340,341,344,346,348,350,353],{"class":99,"line":111},[97,342,343],{"class":153},"    boost",[97,345,158],{"class":157},[97,347,214],{"class":153},[97,349,158],{"class":157},[97,351,352],{"class":153},"buffer",[97,354,355],{"class":157},"(data_),\n",[97,357,358,361,363,365,367,369,372],{"class":99,"line":119},[97,359,360],{"class":153},"    std",[97,362,158],{"class":157},[97,364,259],{"class":153},[97,366,169],{"class":157},[97,368,300],{"class":103},[97,370,371],{"class":153},"Session",[97,373,374],{"class":157},"::on_read,\n",[97,376,377,380],{"class":99,"line":127},[97,378,379],{"class":172},"              this",[97,381,382],{"class":157},",\n",[97,384,385,388,390,392],{"class":99,"line":135},[97,386,387],{"class":153},"              std",[97,389,158],{"class":157},[97,391,269],{"class":153},[97,393,394],{"class":157},"::_1,\n",[97,396,398,400,402,404],{"class":99,"line":397},6,[97,399,387],{"class":153},[97,401,158],{"class":157},[97,403,269],{"class":153},[97,405,406],{"class":157},"::_2));\n",[15,408,409],{},"其中：",[88,411,413],{"className":90,"code":412,"language":92,"meta":93,"style":93},"std::placeholders::_1\nstd::placeholders::_2\n",[23,414,415,426],{"__ignoreMap":93},[97,416,417,419,421,423],{"class":99,"line":100},[97,418,154],{"class":153},[97,420,158],{"class":157},[97,422,269],{"class":153},[97,424,425],{"class":157},"::_1\n",[97,427,428,430,432,434],{"class":99,"line":111},[97,429,154],{"class":153},[97,431,158],{"class":157},[97,433,269],{"class":153},[97,435,436],{"class":157},"::_2\n",[15,438,439],{},"表示“异步操作完成时，Boost.Asio 自动传给回调函数的第 1 个、第 2 个参数”。",[81,441,443],{"id":442},"错误码仍然使用-boostasio-的类型","错误码仍然使用 Boost.Asio 的类型",[15,445,446],{},"这个不要乱换：",[88,448,450],{"className":90,"code":449,"language":92,"meta":93,"style":93},"const boost::system::error_code& ec\n",[23,451,452],{"__ignoreMap":93},[97,453,454,457,460,462,465,468,470],{"class":99,"line":100},[97,455,456],{"class":103},"const",[97,458,459],{"class":153}," boost",[97,461,158],{"class":157},[97,463,464],{"class":153},"system",[97,466,467],{"class":157},"::error_code",[97,469,300],{"class":103},[97,471,472],{"class":157}," ec\n",[15,474,475,476,479],{},"原因是 Boost.Asio 的异步回调默认把错误传给 ",[23,477,478],{},"boost::system::error_code","。以后如果你换 standalone Asio 或者标准网络库，再考虑对应类型。",[28,481],{},[31,483,485],{"id":484},"boostasio-的核心思想","Boost.Asio 的核心思想",[15,487,488],{},"Boost.Asio 可以先粗暴理解成：",[88,490,495],{"className":491,"code":493,"language":494,"meta":93},[492],"language-text","io_context = 事件循环 \u002F 调度器\nsocket \u002F serial_port \u002F timer = IO对象\nasync_xxx() = 注册一个异步任务\nhandler = 异步任务完成后执行的回调函数\nrun() = 开始处理异步任务和回调函数\n","text",[23,496,493],{"__ignoreMap":93},[15,498,499],{},"最小异步程序大概长这样：",[88,501,503],{"className":90,"code":502,"language":92,"meta":93,"style":93},"boost::asio::io_context io;\nboost::asio::steady_timer timer(io, std::chrono::seconds(2));\n\ntimer.async_wait(std::bind(on_timer, std::placeholders::_1));\n\nio.run();\n",[23,504,505,516,557,563,587,591],{"__ignoreMap":93},[97,506,507,509,511,513],{"class":99,"line":100},[97,508,209],{"class":153},[97,510,158],{"class":157},[97,512,214],{"class":153},[97,514,515],{"class":157},"::io_context io;\n",[97,517,518,520,522,524,526,529,532,534,537,539,541,543,545,547,549,551,554],{"class":99,"line":111},[97,519,209],{"class":153},[97,521,158],{"class":157},[97,523,214],{"class":153},[97,525,158],{"class":157},[97,527,528],{"class":153},"steady_timer",[97,530,531],{"class":153}," timer",[97,533,169],{"class":157},[97,535,536],{"class":153},"io",[97,538,311],{"class":157},[97,540,154],{"class":153},[97,542,158],{"class":157},[97,544,161],{"class":153},[97,546,158],{"class":157},[97,548,166],{"class":153},[97,550,169],{"class":157},[97,552,553],{"class":172},"2",[97,555,556],{"class":157},"));\n",[97,558,559],{"class":99,"line":119},[97,560,562],{"emptyLinePlaceholder":561},true,"\n",[97,564,565,567,569,571,573,575,577,579,581,583,585],{"class":99,"line":127},[97,566,247],{"class":157},[97,568,250],{"class":153},[97,570,169],{"class":157},[97,572,154],{"class":153},[97,574,158],{"class":157},[97,576,259],{"class":153},[97,578,262],{"class":157},[97,580,154],{"class":153},[97,582,158],{"class":157},[97,584,269],{"class":153},[97,586,272],{"class":157},[97,588,589],{"class":99,"line":135},[97,590,562],{"emptyLinePlaceholder":561},[97,592,593,596,599],{"class":99,"line":397},[97,594,595],{"class":157},"io.",[97,597,598],{"class":153},"run",[97,600,601],{"class":157},"();\n",[15,603,604],{},"执行逻辑不是：",[88,606,609],{"className":607,"code":608,"language":494,"meta":93},[492],"async_wait 立刻执行 on_timer\n",[23,610,608],{"__ignoreMap":93},[15,612,613],{},"而是：",[88,615,618],{"className":616,"code":617,"language":494,"meta":93},[492],"async_wait 注册任务\nio.run() 进入事件循环\n等待 2 秒\ntimer 到期\nio.run() 调用 on_timer\n没有任务了\nio.run() 返回\n",[23,619,617],{"__ignoreMap":93},[28,621],{},[31,623,624],{"id":624},"编译环境",[81,626,628],{"id":627},"ubuntu-debian","Ubuntu \u002F Debian",[88,630,634],{"className":631,"code":632,"language":633,"meta":93,"style":93},"language-bash shiki shiki-themes github-light github-dark","sudo apt update\nsudo apt install libboost-all-dev libasio-dev\n","bash",[23,635,636,647],{"__ignoreMap":93},[97,637,638,641,644],{"class":99,"line":100},[97,639,640],{"class":153},"sudo",[97,642,643],{"class":107}," apt",[97,645,646],{"class":107}," update\n",[97,648,649,651,653,656,659],{"class":99,"line":111},[97,650,640],{"class":153},[97,652,643],{"class":107},[97,654,655],{"class":107}," install",[97,657,658],{"class":107}," libboost-all-dev",[97,660,661],{"class":107}," libasio-dev\n",[81,663,665],{"id":664},"fedora","Fedora",[88,667,669],{"className":631,"code":668,"language":633,"meta":93,"style":93},"sudo dnf makecache\nsudo dnf install boost-devel asio-devel\n",[23,670,671,681],{"__ignoreMap":93},[97,672,673,675,678],{"class":99,"line":100},[97,674,640],{"class":153},[97,676,677],{"class":107}," dnf",[97,679,680],{"class":107}," makecache\n",[97,682,683,685,687,689,692],{"class":99,"line":111},[97,684,640],{"class":153},[97,686,677],{"class":107},[97,688,655],{"class":107},[97,690,691],{"class":107}," boost-devel",[97,693,694],{"class":107}," asio-devel\n",[31,696,697],{"id":697},"为什么先学定时器",[15,699,700],{},"机器人通信里最容易出问题的不是“API 会不会调用”，而是：",[38,702,703,706,709,712,715,721,726],{},[41,704,705],{},"回调什么时候执行；",[41,707,708],{},"回调在哪个线程执行；",[41,710,711],{},"对象什么时候析构；",[41,713,714],{},"buffer 数据什么时候还能用；",[41,716,717,720],{},[23,718,719],{},"run()"," 为什么卡住；",[41,722,723,725],{},[23,724,719],{}," 为什么又会提前返回；",[41,727,728],{},"多线程时为什么会数据竞争。",[15,730,731],{},"这些问题都可以先用定时器看懂。定时器看懂之后，串口、TCP、UDP 本质上只是“等待的事件不同”：",[88,733,736],{"className":734,"code":735,"language":494,"meta":93},[492],"timer 等待时间到期\nserial_port 等待串口可读 \u002F 可写\ntcp::socket 等待网络可读 \u002F 可写 \u002F 连接完成\nudp::socket 等待收到一个数据报\n",[23,737,735],{"__ignoreMap":93},[28,739],{},[31,741,742],{"id":742},"学完这套教程应该达到什么程度",[15,744,745],{},"学完之后，你应该能做到：",[38,747,748,751,757,763,766,769,772,775],{},[41,749,750],{},"看懂 Boost.Asio 官方 timer \u002F TCP \u002F UDP 教程；",[41,752,753,754,756],{},"能用 ",[23,755,25],{}," 写普通函数回调、成员函数回调；",[41,758,759,760,762],{},"能解释 ",[23,761,45],{}," 的阻塞和返回条件；",[41,764,765],{},"能写串口异步读取下位机数据；",[41,767,768],{},"能写 TCP client \u002F server；",[41,770,771],{},"能写 UDP sender \u002F receiver \u002F echo server；",[41,773,774],{},"能把 Asio 通信模块封装成一个类；",[41,776,777],{},"能把通信模块接进 ROS2 节点，而不是在 ROS2 回调里写阻塞死循环。",[28,779],{},[31,781,783],{"id":782},"你现在最需要记住的-5-句话","你现在最需要记住的 5 句话",[38,785,786,792,797,803,806],{},[41,787,788,791],{},[23,789,790],{},"async_xxx()"," 只是注册异步任务，不是立刻执行回调。",[41,793,794,796],{},[23,795,45],{}," 才是真正驱动异步任务执行的地方。",[41,798,799,800,802],{},"回调函数只会在正在执行 ",[23,801,45],{}," 的线程里被调用。",[41,804,805],{},"异步 buffer、socket、timer 对象必须活到回调执行完。",[41,807,808,809,812],{},"类里绑定成员函数时，写 ",[23,810,811],{},"std::bind(&Class::func, this, _1, _2)","。",[814,815,816],"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 .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 .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":93,"searchDepth":111,"depth":111,"links":818},[819,820,826,827,831,832,833],{"id":33,"depth":111,"text":33},{"id":79,"depth":111,"text":79,"children":821},[822,823,825],{"id":83,"depth":119,"text":83},{"id":231,"depth":119,"text":824},"回调统一使用 std::bind",{"id":442,"depth":119,"text":443},{"id":484,"depth":111,"text":485},{"id":624,"depth":111,"text":624,"children":828},[829,830],{"id":627,"depth":119,"text":628},{"id":664,"depth":119,"text":665},{"id":697,"depth":111,"text":697},{"id":742,"depth":111,"text":742},{"id":782,"depth":111,"text":783},"2100-0100","2023-10-05","2023-10-05-cplusplus-jiao-xue","\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue","Cplusplus教学","md",false,{},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-boost-asio-yi-bu-io-ku",{"title":5,"description":93},"wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-Boost.Asio异步IO库","37BkDbLYG4qW3qYV9FdnqAicTfJYMJxWkUkW8pfrEsY",[847,854,860,866,872,878,884,890,896,902,908,914,920,926,932,938,944,950,956,962,968,974,980,986,992,998,1004,1010,1016,1022,1028,1034,1040,1046,1052,1058,1064,1070,1076,1082,1088,1094,1100,1106,1112,1118,1124,1130,1136,1142,1148,1154,1159,1165,1171,1177,1183,1189,1195,1201,1207,1213,1219,1225,1231,1237,1243,1249,1255,1261,1267,1273,1279,1285,1291,1297,1303,1309,1315,1321,1323,1329,1335,1341,1347,1353,1359,1365,1371,1377,1383,1389],{"path":848,"stem":849,"title":850,"authors":851,"date":835,"chapterOrder":852,"chapterDepth":853,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":855,"stem":856,"title":857,"authors":858,"date":835,"chapterOrder":859,"chapterDepth":853,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0200-c-ji-chu-chu-shi","wiki\u002F2023-10-05-Cplusplus教学\u002F0200-C++基础初识","C++基础初识",[7],"0200",{"path":861,"stem":862,"title":863,"authors":864,"date":835,"chapterOrder":865,"chapterDepth":853,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":867,"stem":868,"title":869,"authors":870,"date":835,"chapterOrder":871,"chapterDepth":853,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0400-shu-ru-shu-chu","wiki\u002F2023-10-05-Cplusplus教学\u002F0400-输入输出","输入输出",[7],"0400",{"path":873,"stem":874,"title":875,"authors":876,"date":835,"chapterOrder":877,"chapterDepth":853,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0500-yun-suan-fu","wiki\u002F2023-10-05-Cplusplus教学\u002F0500-运算符","运算符",[7],"0500",{"path":879,"stem":880,"title":881,"authors":882,"date":835,"chapterOrder":883,"chapterDepth":853,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0600-cheng-xu-liu-cheng-jie-gou","wiki\u002F2023-10-05-Cplusplus教学\u002F0600-程序流程结构","程序流程结构",[7],"0600",{"path":885,"stem":886,"title":887,"authors":888,"date":835,"chapterOrder":889,"chapterDepth":853,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0700-shu-zu","wiki\u002F2023-10-05-Cplusplus教学\u002F0700-数组","数组",[7],"0700",{"path":891,"stem":892,"title":893,"authors":894,"date":835,"chapterOrder":895,"chapterDepth":853,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0800-han-shu-yu-tou-wen-jian","wiki\u002F2023-10-05-Cplusplus教学\u002F0800-函数与头文件","函数与头文件",[7],"0800",{"path":897,"stem":898,"title":899,"authors":900,"date":835,"chapterOrder":901,"chapterDepth":853,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0900-zhi-zhen","wiki\u002F2023-10-05-Cplusplus教学\u002F0900-指针","指针",[7],"0900",{"path":903,"stem":904,"title":905,"authors":906,"date":835,"chapterOrder":907,"chapterDepth":853,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1000-jie-gou-ti-yu-gong-yong-ti","wiki\u002F2023-10-05-Cplusplus教学\u002F1000-结构体与共用体","结构体与共用体",[7],"1000",{"path":909,"stem":910,"title":911,"authors":912,"date":835,"chapterOrder":913,"chapterDepth":853,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":915,"stem":916,"title":917,"authors":918,"date":835,"chapterOrder":919,"chapterDepth":853,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1200-yin-yong","wiki\u002F2023-10-05-Cplusplus教学\u002F1200-引用","引用",[7],"1200",{"path":921,"stem":922,"title":923,"authors":924,"date":835,"chapterOrder":925,"chapterDepth":853,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1300-han-shu-ti-gao","wiki\u002F2023-10-05-Cplusplus教学\u002F1300-函数提高","函数提高",[7],"1300",{"path":927,"stem":928,"title":929,"authors":930,"date":835,"chapterOrder":931,"chapterDepth":853,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1350-ming-ming-kong-jian","wiki\u002F2023-10-05-Cplusplus教学\u002F1350-命名空间","命名空间",[7],"1350",{"path":933,"stem":934,"title":935,"authors":936,"date":835,"chapterOrder":937,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0100-feng-zhuang","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0100-封装","封装",[7],"1400-0100",{"path":939,"stem":940,"title":941,"authors":942,"date":835,"chapterOrder":943,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":945,"stem":946,"title":947,"authors":948,"date":835,"chapterOrder":949,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":951,"stem":952,"title":953,"authors":954,"date":835,"chapterOrder":955,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":957,"stem":958,"title":959,"authors":960,"date":835,"chapterOrder":961,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0500-ji-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0500-继承","继承",[7],"1400-0500",{"path":963,"stem":964,"title":965,"authors":966,"date":835,"chapterOrder":967,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0600-duo-tai","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0600-多态","多态",[7],"1400-0600",{"path":969,"stem":970,"title":971,"authors":972,"date":835,"chapterOrder":973,"chapterDepth":853,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-lei-he-dui-xiang","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-类和对象","类和对象",[7],"1400",{"path":975,"stem":976,"title":977,"authors":978,"date":835,"chapterOrder":979,"chapterDepth":853,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1450-han-shu-zhi-zhen","wiki\u002F2023-10-05-Cplusplus教学\u002F1450-函数指针","函数指针",[7],"1450",{"path":981,"stem":982,"title":983,"authors":984,"date":835,"chapterOrder":985,"chapterDepth":853,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1500-wen-jian-cao-zuo","wiki\u002F2023-10-05-Cplusplus教学\u002F1500-文件操作","文件操作",[7],"1500",{"path":987,"stem":988,"title":989,"authors":990,"date":835,"chapterOrder":991,"chapterDepth":853,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":993,"stem":994,"title":995,"authors":996,"date":835,"chapterOrder":997,"chapterDepth":853,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1700-mu-ban","wiki\u002F2023-10-05-Cplusplus教学\u002F1700-模板","模板",[7],"1700",{"path":999,"stem":1000,"title":1001,"authors":1002,"date":835,"chapterOrder":1003,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1005,"stem":1006,"title":1007,"authors":1008,"date":835,"chapterOrder":1009,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1011,"stem":1012,"title":1013,"authors":1014,"date":835,"chapterOrder":1015,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1017,"stem":1018,"title":1019,"authors":1020,"date":835,"chapterOrder":1021,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1023,"stem":1024,"title":1025,"authors":1026,"date":835,"chapterOrder":1027,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1029,"stem":1030,"title":1031,"authors":1032,"date":835,"chapterOrder":1033,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1035,"stem":1036,"title":1037,"authors":1038,"date":835,"chapterOrder":1039,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1041,"stem":1042,"title":1043,"authors":1044,"date":835,"chapterOrder":1045,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1047,"stem":1048,"title":1049,"authors":1050,"date":835,"chapterOrder":1051,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1053,"stem":1054,"title":1055,"authors":1056,"date":835,"chapterOrder":1057,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1059,"stem":1060,"title":1061,"authors":1062,"date":835,"chapterOrder":1063,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1065,"stem":1066,"title":1067,"authors":1068,"date":835,"chapterOrder":1069,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1200-chang-yong-suan-fa","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-1200-常用算法","常用算法",[7],"1800-1200",{"path":1071,"stem":1072,"title":1073,"authors":1074,"date":835,"chapterOrder":1075,"chapterDepth":853,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-stl-ti-gao-bian-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-STL提高编程","STL提高编程",[7],"1800",{"path":1077,"stem":1078,"title":1079,"authors":1080,"date":835,"chapterOrder":1081,"chapterDepth":853,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1900-c-lei-xing-zhuan-huan","wiki\u002F2023-10-05-Cplusplus教学\u002F1900-C++类型转换","C++类型转换",[7],"1900",{"path":1083,"stem":1084,"title":1085,"authors":1086,"date":835,"chapterOrder":1087,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0100-auto","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0100-auto","auto",[7],"2000-0100",{"path":1089,"stem":1090,"title":1091,"authors":1092,"date":835,"chapterOrder":1093,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0200-nullptr","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0200-nullptr","nullptr",[7],"2000-0200",{"path":1095,"stem":1096,"title":1097,"authors":1098,"date":835,"chapterOrder":1099,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0300-using","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0300-using","using",[7],"2000-0300",{"path":1101,"stem":1102,"title":1103,"authors":1104,"date":835,"chapterOrder":1105,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1107,"stem":1108,"title":1109,"authors":1110,"date":835,"chapterOrder":1111,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1113,"stem":1114,"title":1115,"authors":1116,"date":835,"chapterOrder":1117,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1119,"stem":1120,"title":1121,"authors":1122,"date":835,"chapterOrder":1123,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0700-constexpr","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0700-constexpr","constexpr",[7],"2000-0700",{"path":1125,"stem":1126,"title":1127,"authors":1128,"date":835,"chapterOrder":1129,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0800-raii","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0800-RAII","RAII",[7],"2000-0800",{"path":1131,"stem":1132,"title":1133,"authors":1134,"date":835,"chapterOrder":1135,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0900-zhi-neng-zhi-zhen","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0900-智能指针","智能指针",[7],"2000-0900",{"path":1137,"stem":1138,"title":1139,"authors":1140,"date":835,"chapterOrder":1141,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1143,"stem":1144,"title":1145,"authors":1146,"date":835,"chapterOrder":1147,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1149,"stem":1150,"title":1151,"authors":1152,"date":835,"chapterOrder":1153,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1155,"stem":1156,"title":25,"authors":1157,"date":835,"chapterOrder":1158,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1300-std-bind","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1300-std-bind",[7],"2000-1300",{"path":1160,"stem":1161,"title":1162,"authors":1163,"date":835,"chapterOrder":1164,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1166,"stem":1167,"title":1168,"authors":1169,"date":835,"chapterOrder":1170,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1172,"stem":1173,"title":1174,"authors":1175,"date":835,"chapterOrder":1176,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1178,"stem":1179,"title":1180,"authors":1181,"date":835,"chapterOrder":1182,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1184,"stem":1185,"title":1186,"authors":1187,"date":835,"chapterOrder":1188,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1190,"stem":1191,"title":1192,"authors":1193,"date":835,"chapterOrder":1194,"chapterDepth":111,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1196,"stem":1197,"title":1198,"authors":1199,"date":835,"chapterOrder":1200,"chapterDepth":111,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1202,"stem":1203,"title":1204,"authors":1205,"date":835,"chapterOrder":1206,"chapterDepth":111,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1208,"stem":1209,"title":1210,"authors":1211,"date":835,"chapterOrder":1212,"chapterDepth":111,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-1000-bing-fa-bian-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-1000-并发编程","并发编程",[7],"2000-1900-1000",{"path":1214,"stem":1215,"title":1216,"authors":1217,"date":835,"chapterOrder":1218,"chapterDepth":111,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-1100-std-thread","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-1100-std-thread","std::thread",[7],"2000-1900-1100",{"path":1220,"stem":1221,"title":1222,"authors":1223,"date":835,"chapterOrder":1224,"chapterDepth":111,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1226,"stem":1227,"title":1228,"authors":1229,"date":835,"chapterOrder":1230,"chapterDepth":111,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-1300-std-atomic","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-1300-std-atomic","std::atomic",[7],"2000-1900-1300",{"path":1232,"stem":1233,"title":1234,"authors":1235,"date":835,"chapterOrder":1236,"chapterDepth":111,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-1400-condition-variable","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-1400-condition-variable","condition_variable",[7],"2000-1900-1400",{"path":1238,"stem":1239,"title":1240,"authors":1241,"date":835,"chapterOrder":1242,"chapterDepth":111,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1244,"stem":1245,"title":1246,"authors":1247,"date":835,"chapterOrder":1248,"chapterDepth":111,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1250,"stem":1251,"title":1252,"authors":1253,"date":835,"chapterOrder":1254,"chapterDepth":111,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1256,"stem":1257,"title":1258,"authors":1259,"date":835,"chapterOrder":1260,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1262,"stem":1263,"title":1264,"authors":1265,"date":835,"chapterOrder":1266,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1268,"stem":1269,"title":1270,"authors":1271,"date":835,"chapterOrder":1272,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1274,"stem":1275,"title":1276,"authors":1277,"date":835,"chapterOrder":1278,"chapterDepth":853,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-xian-dai-c","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-现代C++","现代C++",[7],"2000",{"path":1280,"stem":1281,"title":1282,"authors":1283,"date":835,"chapterOrder":1284,"chapterDepth":111,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1286,"stem":1287,"title":1288,"authors":1289,"date":835,"chapterOrder":1290,"chapterDepth":111,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1292,"stem":1293,"title":1294,"authors":1295,"date":835,"chapterOrder":1296,"chapterDepth":111,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1298,"stem":1299,"title":1300,"authors":1301,"date":835,"chapterOrder":1302,"chapterDepth":111,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1304,"stem":1305,"title":1306,"authors":1307,"date":835,"chapterOrder":1308,"chapterDepth":111,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1310,"stem":1311,"title":1312,"authors":1313,"date":835,"chapterOrder":1314,"chapterDepth":111,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1316,"stem":1317,"title":1318,"authors":1319,"date":835,"chapterOrder":1320,"chapterDepth":111,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":842,"stem":844,"title":5,"authors":1322,"date":835,"chapterOrder":834,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},[7],{"path":1324,"stem":1325,"title":1326,"authors":1327,"date":835,"chapterOrder":1328,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1330,"stem":1331,"title":1332,"authors":1333,"date":835,"chapterOrder":1334,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1336,"stem":1337,"title":1338,"authors":1339,"date":835,"chapterOrder":1340,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1342,"stem":1343,"title":1344,"authors":1345,"date":835,"chapterOrder":1346,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1348,"stem":1349,"title":1350,"authors":1351,"date":835,"chapterOrder":1352,"chapterDepth":853,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-chang-yong-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-常用库","常用库学习",[7],"2100",{"path":1354,"stem":1355,"title":1356,"authors":1357,"date":835,"chapterOrder":1358,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1360,"stem":1361,"title":1362,"authors":1363,"date":835,"chapterOrder":1364,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1366,"stem":1367,"title":1368,"authors":1369,"date":835,"chapterOrder":1370,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1372,"stem":1373,"title":1374,"authors":1375,"date":835,"chapterOrder":1376,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1378,"stem":1379,"title":1380,"authors":1381,"date":835,"chapterOrder":1382,"chapterDepth":100,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\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":1384,"stem":1385,"title":1386,"authors":1387,"date":835,"chapterOrder":1388,"chapterDepth":853,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":840},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-cmake-gong-cheng-mu-ban","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-CMake工程模板","CMake工程模板",[7],"2200",{"path":837,"stem":1390,"title":1391,"authors":1392,"date":835,"chapterOrder":1393,"chapterDepth":853,"docKey":836,"docRoot":837,"docTitle":838,"isWikiDoc":561,"isWikiIndex":561},"wiki\u002F2023-10-05-Cplusplus教学\u002Findex","C\u002FC++教程",[7],null,[1395,1397,1400,1403],{"name":7,"image":1396},"\u002Fimages\u002Fmember_photo\u002F董佳辉.jpg",{"name":1398,"image":1399},"宫金良","\u002Fimages\u002Fmember_photo\u002F宫金良.jpg",{"name":1401,"image":1402},"巩丽","\u002Fimages\u002Fmember_photo\u002F巩丽.png",{"name":1404,"image":1405},"张彦斐","\u002Fimages\u002Fmember_photo\u002F张彦斐.jpg",1792431900271]