[{"data":1,"prerenderedAt":1153},["ShallowReactive",2],{"wiki-page-/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-xian-dai-c":3,"wiki-doc-items-/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-xian-dai-c":735,"language-switcher-data-/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-xian-dai-c":1137,"wiki-i18n-paths-/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-xian-dai-c":1152},{"id":4,"title":5,"body":6,"canonicalPath":715,"chapter":716,"chapterSort":717,"date":718,"description":12,"docI18nKey":719,"docKey":720,"docRoot":721,"docTitle":722,"extension":723,"i18nKey":724,"isBlogPost":725,"isWikiDoc":726,"isWikiIndex":725,"layout":727,"legacyPath":728,"locale":729,"localeSlug":730,"meta":731,"navigation":726,"path":715,"seo":732,"sourcePath":728,"sourceStem":724,"stem":724,"wikiDepth":733,"__hash__":734},"content/wiki/2023-10-05-Cplusplus教学/ch18-现代C++.md","现代C++",{"type":7,"value":8,"toc":700},"minimark",[9,13,16,20,23,55,58,61,174,177,212,215,218,408,411,422,436,439,443,455,458,496,499,505,508,534,537,544,595,604,607,610,643,646],[10,11,12],"p",{},"\"现代 C++\"通常指 C++11 以及之后的标准引入的一系列写法和库工具。它不是把旧 C++ 全部推翻，而是在原有语法之上，提供更安全、更清晰、更适合工程开发的表达方式。",[10,14,15],{},"本章按\"由浅入深、从常用到进阶\"的顺序组织：先学每天都会用到的语法，再学生命周期和资源管理，接着学回调、数据表达、时间、文件和并发，最后了解模块化编译。",[17,18,19],"h2",{"id":19},"本章例程约定",[10,21,22],{},"为了方便你直接复制验证，本章各小节的\"示例代码\"遵循这些约定：",[24,25,26,35,42,49,52],"ol",{},[27,28,29,30,34],"li",{},"示例代码都包含完整 ",[31,32,33],"code",{},"#include","。",[27,36,37,38,41],{},"示例代码都包含 ",[31,39,40],{},"main"," 函数。",[27,43,44,45,48],{},"示例代码可以复制到单个 ",[31,46,47],{},".cpp"," 文件中编译运行。",[27,50,51],{},"每个示例代码下方都给出运行结果。",[27,53,54],{},"示例尽量一次只增加一个新概念，避免一个例子塞太多东西。",[10,56,57],{},"文中的\"常见错误\"用于说明不要这样写。为了避免误复制，错误写法会尽量放在文字说明或短片段中，不当作可运行示例。",[17,59,60],{"id":60},"学习顺序",[62,63,64,81],"table",{},[65,66,67],"thead",{},[68,69,70,75,78],"tr",{},[71,72,74],"th",{"align":73},"left","阶段",[71,76,77],{"align":73},"先解决的问题",[71,79,80],{"align":73},"对应章节",[82,83,84,109,123,149],"tbody",{},[68,85,86,90,93],{},[87,88,89],"td",{"align":73},"基础表达",[87,91,92],{"align":73},"少写重复类型，减少空指针和枚举混用，遍历更清楚",[87,94,95,98,99,98,102,98,105,108],{"align":73},[31,96,97],{},"auto","、",[31,100,101],{},"nullptr",[31,103,104],{},"using",[31,106,107],{},"enum class","、范围 for、结构化绑定",[68,110,111,114,117],{},[87,112,113],{"align":73},"生命周期",[87,115,116],{"align":73},"资源什么时候释放，谁拥有对象，大对象怎么高效传递",[87,118,119,122],{"align":73},[31,120,121],{},"constexpr","、RAII、智能指针、右值引用和移动语义",[68,124,125,128,131],{},[87,126,127],{"align":73},"回调和数据模型",[87,129,130],{"align":73},"小函数、回调保存、参数适配、可能没有值、多种类型之一",[87,132,133,134,98,137,98,140,98,143,98,146],{"align":73},"Lambda、",[31,135,136],{},"std::function",[31,138,139],{},"std::bind",[31,141,142],{},"std::optional",[31,144,145],{},"std::variant",[31,147,148],{},"std::span",[68,150,151,154,157],{},[87,152,153],{"align":73},"系统能力",[87,155,156],{"align":73},"格式化输出、时间、并发、文件系统、模块化",[87,158,159,162,163,98,166,169,170,173],{"align":73},[31,160,161],{},"std::format"," / ",[31,164,165],{},"std::print",[31,167,168],{},"std::chrono","、并发编程、",[31,171,172],{},"std::filesystem","、modules",[10,175,176],{},"现代 C++ 的重点不是\"语法更新\"，而是\"把意图写清楚\"。例如：",[178,179,180,189,194,197,200,205],"ul",{},[27,181,182,184,185,188],{},[31,183,101],{}," 让空指针和整数 ",[31,186,187],{},"0"," 分开。",[27,190,191,193],{},[31,192,107],{}," 让不同枚举类型不能随便混用。",[27,195,196],{},"RAII 和智能指针把资源释放交给对象生命周期。",[27,198,199],{},"Lambda 让局部回调写在使用现场。",[27,201,202,204],{},[31,203,136],{}," 把不同类型的可调用对象统一保存和传递。",[27,206,207,162,209,211],{},[31,208,161],{},[31,210,165],{}," 让格式化输出更简洁，并保持类型安全。",[17,213,214],{"id":214},"旧写法和现代写法的关系",[10,216,217],{},"很多现代 C++ 特性都来自一个朴素问题：旧写法能用，但在复杂场景里容易出错。",[62,219,220,233],{},[65,221,222],{},[68,223,224,227,230],{},[71,225,226],{"align":73},"旧写法",[71,228,229],{"align":73},"主要问题",[71,231,232],{"align":73},"现代写法",[82,234,235,252,267,279,299,317,328,340,353,368,384,396],{},[68,236,237,245,248],{},[87,238,239,162,242,244],{"align":73},[31,240,241],{},"NULL",[31,243,187],{}," 表示空指针",[87,246,247],{"align":73},"会和整数重载混淆",[87,249,250],{"align":73},[31,251,101],{},[68,253,254,260,263],{},[87,255,256,259],{"align":73},[31,257,258],{},"typedef"," 写类型别名",[87,261,262],{"align":73},"模板别名不直观",[87,264,265],{"align":73},[31,266,104],{},[68,268,269,272,275],{},[87,270,271],{"align":73},"普通枚举",[87,273,274],{"align":73},"枚举名污染作用域，可隐式转整数",[87,276,277],{"align":73},[31,278,107],{},[68,280,281,287,290],{},[87,282,283,284],{"align":73},"手动 ",[31,285,286],{},"new/delete",[87,288,289],{"align":73},"提前返回、异常、重复释放都容易出错",[87,291,292,293,98,296],{"align":73},"RAII、",[31,294,295],{},"std::unique_ptr",[31,297,298],{},"std::shared_ptr",[68,300,301,306,309],{},[87,302,283,303],{"align":73},[31,304,305],{},"lock/unlock",[87,307,308],{"align":73},"忘记解锁会死锁，异常路径更危险",[87,310,311,98,314],{"align":73},[31,312,313],{},"std::lock_guard",[31,315,316],{},"std::unique_lock",[68,318,319,322,325],{},[87,320,321],{"align":73},"远处定义普通函数做简单回调",[87,323,324],{"align":73},"局部逻辑被拆散，不能方便携带上下文",[87,326,327],{"align":73},"Lambda",[68,329,330,333,336],{},[87,331,332],{"align":73},"只用函数指针保存回调",[87,334,335],{"align":73},"不能保存有捕获的 lambda 和函数对象",[87,337,338],{"align":73},[31,339,136],{},[68,341,342,345,348],{},[87,343,344],{"align":73},"手写适配函数调整参数",[87,346,347],{"align":73},"代码重复，旧接口适配麻烦",[87,349,350,352],{"align":73},[31,351,139],{}," 或 Lambda",[68,354,355,358,364],{},[87,356,357],{"align":73},"用特殊值表示失败",[87,359,360,363],{"align":73},[31,361,362],{},"-1","、空字符串等魔法值语义不清",[87,365,366],{"align":73},[31,367,142],{},[68,369,370,377,380],{},[87,371,372,373,376],{"align":73},"用 ",[31,374,375],{},"union"," 表示多种类型",[87,378,379],{"align":73},"访问错误类型会产生未定义行为",[87,381,382],{"align":73},[31,383,145],{},[68,385,386,389,392],{},[87,387,388],{"align":73},"手写时间单位换算",[87,390,391],{"align":73},"秒、毫秒、微秒容易混",[87,393,394],{"align":73},[31,395,168],{},[68,397,398,401,404],{},[87,399,400],{"align":73},"平台相关文件 API",[87,402,403],{"align":73},"Windows/Linux 写法不同",[87,405,406],{"align":73},[31,407,172],{},[10,409,410],{},"学习每个特性时，可以按三个问题来理解：",[24,412,413,416,419],{},[27,414,415],{},"旧写法哪里容易错？",[27,417,418],{},"现代写法如何把意图写进类型或语法里？",[27,420,421],{},"在什么场景下差异才明显？",[10,423,424,425,427,428,431,432,435],{},"比如一个智能指针示例如果只在 ",[31,426,40],{}," 里创建对象然后正常结束，看起来和手动 ",[31,429,430],{},"delete"," 差不多；一旦出现提前 ",[31,433,434],{},"return","、异常、跨函数传递，RAII 的价值就会立刻显现。一个 Lambda 如果只立刻调用，按值捕获和按引用捕获都可能没事；一旦保存到回调、线程、定时器里，生命周期差异就会变得非常重要。",[17,437,438],{"id":438},"推荐学习路线",[440,441,442],"h3",{"id":442},"让代码更清楚",[10,444,445,446,98,448,98,450,98,452,454],{},"先学习 ",[31,447,97],{},[31,449,101],{},[31,451,104],{},[31,453,107],{},"、范围 for 和结构化绑定。这些内容难度不高，但能明显减少冗长代码和低级错误。",[10,456,457],{},"这一阶段重点记住：",[178,459,460,465,470,475,482],{},[27,461,462,464],{},[31,463,97],{}," 不是弱类型，只是让编译器帮你写类型。",[27,466,467,469],{},[31,468,101],{}," 只表示空指针，不表示整数。",[27,471,472,474],{},[31,473,107],{}," 默认不和整数混用。",[27,476,477,478,481],{},"范围 for 默认用 ",[31,479,480],{},"const auto&"," 遍历大对象。",[27,483,484,485,98,488,491,492,495],{},"结构化绑定适合解包 ",[31,486,487],{},"pair",[31,489,490],{},"tuple","、结构体和 ",[31,493,494],{},"map"," 元素。",[440,497,498],{"id":498},"理解生命周期",[10,500,501,502,504],{},"接着学习 ",[31,503,121],{},"、RAII、智能指针和移动语义。这一阶段比语法更重要的是思维方式：对象什么时候创建，什么时候销毁，谁拥有它，谁只是借用它。",[10,506,507],{},"建议按这个顺序理解：",[24,509,510,513,519,525,531],{},[27,511,512],{},"RAII：资源和对象生命周期绑定。",[27,514,515,518],{},[31,516,517],{},"unique_ptr","：独占所有权，默认选择。",[27,520,521,524],{},[31,522,523],{},"shared_ptr","：确实需要多个所有者时才用。",[27,526,527,530],{},[31,528,529],{},"weak_ptr","：只观察，不延长生命周期，用来打破循环引用。",[27,532,533],{},"移动语义：把资源转移出去，避免大对象深拷贝。",[440,535,536],{"id":536},"掌握回调和数据表达",[10,538,133,539,98,541,543],{},[31,540,136],{},[31,542,139],{}," 三章要连起来看，但不要混在一起背：",[62,545,546,559],{},[65,547,548],{},[68,549,550,553,556],{},[71,551,552],{"align":73},"工具",[71,554,555],{"align":73},"解决的问题",[71,557,558],{"align":73},"重点",[82,560,561,571,583],{},[68,562,563,565,568],{},[87,564,327],{"align":73},[87,566,567],{"align":73},"在使用现场写一个小函数",[87,569,570],{"align":73},"捕获列表、参数、返回值、生命周期",[68,572,573,577,580],{},[87,574,575],{"align":73},[31,576,136],{},[87,578,579],{"align":73},"统一保存和传递不同类型的可调用对象",[87,581,582],{"align":73},"类型擦除、回调成员变量、回调容器",[68,584,585,589,592],{},[87,586,587],{"align":73},[31,588,139],{},[87,590,591],{"align":73},"适配已有函数的参数",[87,593,594],{"align":73},"固定参数、调整顺序、绑定成员函数",[10,596,597,98,599,98,601,603],{},[31,598,142],{},[31,600,145],{},[31,602,148],{}," 则分别解决\"可能没有值\"、\"几种类型之一\"、\"借用一段连续数据\"的问题。",[440,605,606],{"id":606},"走向工程能力",[10,608,609],{},"最后学习格式化输出、时间、并发、文件系统和 modules。这些内容更接近真实项目：",[178,611,612,627,632,635,640],{},[27,613,614,162,616,618,619,622,623,626],{},[31,615,161],{},[31,617,165],{}," 比 ",[31,620,621],{},"stringstream"," 简洁，比 ",[31,624,625],{},"printf"," 类型安全。",[27,628,629,631],{},[31,630,168],{}," 避免手写时间单位换算。",[27,633,634],{},"并发编程要先保证正确，再考虑速度。",[27,636,637,639],{},[31,638,172],{}," 让路径、目录、文件信息处理跨平台。",[27,641,642],{},"modules 是 C++20 引入的新编译模型，目前应先理解概念，再根据工具链支持决定是否使用。",[17,644,645],{"id":645},"实战练习建议",[24,647,648,669,674,685,688,697],{},[27,649,650,651,653,654,657,658,661,662,98,664,98,666,668],{},"学 ",[31,652,101],{},"：写两个重载函数，分别接收 ",[31,655,656],{},"int"," 和 ",[31,659,660],{},"int*","，观察 ",[31,663,187],{},[31,665,241],{},[31,667,101],{}," 的区别。",[27,670,650,671,673],{},[31,672,107],{},"：把普通枚举换成枚举类，看看哪些隐式转换被禁止。",[27,675,676,677,679,680,682,683,34],{},"学智能指针：先写一个提前 ",[31,678,434],{}," 的手动 ",[31,681,286],{}," 例子，再改成 ",[31,684,517],{},[27,686,687],{},"学 Lambda：分别用按值捕获和按引用捕获，观察外部变量是否变化。",[27,689,650,690,692,693,696],{},[31,691,136],{},"：把多个不同 lambda 放进同一个 ",[31,694,695],{},"vector","，统一执行。",[27,698,699],{},"学并发：让两个 1 秒等待任务先顺序执行，再放进两个线程中执行，对比耗时。",{"title":701,"searchDepth":702,"depth":702,"links":703},"",2,[704,705,706,707,714],{"id":19,"depth":702,"text":19},{"id":60,"depth":702,"text":60},{"id":214,"depth":702,"text":214},{"id":438,"depth":702,"text":438,"children":708},[709,711,712,713],{"id":442,"depth":710,"text":442},3,{"id":498,"depth":710,"text":498},{"id":536,"depth":710,"text":536},{"id":606,"depth":710,"text":606},{"id":645,"depth":702,"text":645},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-xian-dai-c","18",18000000,"2023-10-05","wiki/2023-10-05-cplusplus-jiao-xue","zh-cn:2023-10-05-cplusplus-jiao-xue","/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue","Cplusplus教学","md","wiki/2023-10-05-Cplusplus教学/ch18-现代C++",false,true,null,"/wiki/2023-10-05-cplusplus-jiao-xue/ch18-xian-dai-c","zh-CN","zh-cn",{},{"title":5,"description":12},1,"ldi38dDx8bVsWByEHXz1YIFLThG60IJ5ftfBEj3j4Uc",[736,742,748,754,760,766,772,778,784,790,796,802,808,814,820,826,832,838,844,850,856,862,868,874,879,885,891,896,901,906,911,916,922,927,933,939,945,951,957,962,967,973,978,983,989,995,1000,1006,1012,1013,1019,1025,1031,1037,1043,1049,1055,1061,1067,1073,1079,1085,1091,1097,1103,1109,1115,1121,1127,1133],{"path":737,"stem":738,"title":739,"date":718,"chapter":740,"chapterSort":741,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch1-c-ji-chu-chu-shi","wiki/2023-10-05-Cplusplus教学/ch1-C++基础初识","C++基础初识","1",1000000,{"path":743,"stem":744,"title":745,"date":718,"chapter":746,"chapterSort":747,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch10-nei-cun-fen-qu-yu-sheng-ming-zhou-qi","wiki/2023-10-05-Cplusplus教学/ch10-内存分区与生命周期","内存分区与生命周期","10",10000000,{"path":749,"stem":750,"title":751,"date":718,"chapter":752,"chapterSort":753,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch11-yin-yong","wiki/2023-10-05-Cplusplus教学/ch11-引用","引用","11",11000000,{"path":755,"stem":756,"title":757,"date":718,"chapter":758,"chapterSort":759,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch12-han-shu-ti-gao-yu-ming-ming-kong-jian","wiki/2023-10-05-Cplusplus教学/ch12-函数提高与命名空间","函数提高与命名空间","12",12000000,{"path":761,"stem":762,"title":763,"date":718,"chapter":764,"chapterSort":765,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-1-feng-zhuang","wiki/2023-10-05-Cplusplus教学/ch13-1-封装","封装","13.1",13010000,{"path":767,"stem":768,"title":769,"date":718,"chapter":770,"chapterSort":771,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-2-dui-xiang-chu-shi-hua-he-qing-li","wiki/2023-10-05-Cplusplus教学/ch13-2-对象初始化和清理","对象初始化和清理","13.2",13020000,{"path":773,"stem":774,"title":775,"date":718,"chapter":776,"chapterSort":777,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-3-dui-xiang-mo-xing-yu-this-zhi-zhen","wiki/2023-10-05-Cplusplus教学/ch13-3-对象模型与this指针","对象模型与this指针","13.3",13030000,{"path":779,"stem":780,"title":781,"date":718,"chapter":782,"chapterSort":783,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-4-you-yuan-yu-yun-suan-fu-zhong-zai","wiki/2023-10-05-Cplusplus教学/ch13-4-友元与运算符重载","友元与运算符重载","13.4",13040000,{"path":785,"stem":786,"title":787,"date":718,"chapter":788,"chapterSort":789,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-5-ji-cheng","wiki/2023-10-05-Cplusplus教学/ch13-5-继承","继承","13.5",13050000,{"path":791,"stem":792,"title":793,"date":718,"chapter":794,"chapterSort":795,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-6-duo-tai","wiki/2023-10-05-Cplusplus教学/ch13-6-多态","多态","13.6",13060000,{"path":797,"stem":798,"title":799,"date":718,"chapter":800,"chapterSort":801,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-lei-he-dui-xiang","wiki/2023-10-05-Cplusplus教学/ch13-类和对象","类和对象","13",13000000,{"path":803,"stem":804,"title":805,"date":718,"chapter":806,"chapterSort":807,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch14-wen-jian-cao-zuo","wiki/2023-10-05-Cplusplus教学/ch14-文件操作","文件操作","14",14000000,{"path":809,"stem":810,"title":811,"date":718,"chapter":812,"chapterSort":813,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch15-mu-ban","wiki/2023-10-05-Cplusplus教学/ch15-模板","模板","15",15000000,{"path":815,"stem":816,"title":817,"date":718,"chapter":818,"chapterSort":819,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-1-stl-chu-shi","wiki/2023-10-05-Cplusplus教学/ch16-1-STL初识","STL初识","16.1",16010000,{"path":821,"stem":822,"title":823,"date":718,"chapter":824,"chapterSort":825,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-2-std-array","wiki/2023-10-05-Cplusplus教学/ch16-2-std-array","std::array","16.2",16020000,{"path":827,"stem":828,"title":829,"date":718,"chapter":830,"chapterSort":831,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-3-string-rong-qi","wiki/2023-10-05-Cplusplus教学/ch16-3-string容器","string容器","16.3",16030000,{"path":833,"stem":834,"title":835,"date":718,"chapter":836,"chapterSort":837,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-4-vector-yu-deque-rong-qi","wiki/2023-10-05-Cplusplus教学/ch16-4-vector与deque容器","vector与deque容器","16.4",16040000,{"path":839,"stem":840,"title":841,"date":718,"chapter":842,"chapterSort":843,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-5-stack-queue-list-rong-qi","wiki/2023-10-05-Cplusplus教学/ch16-5-stack-queue-list容器","stack / queue / list 容器","16.5",16050000,{"path":845,"stem":846,"title":847,"date":718,"chapter":848,"chapterSort":849,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-6-set-map-rong-qi","wiki/2023-10-05-Cplusplus教学/ch16-6-set-map容器","set / map 容器","16.6",16060000,{"path":851,"stem":852,"title":853,"date":718,"chapter":854,"chapterSort":855,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-7-han-shu-dui-xiang-yu-wei-ci","wiki/2023-10-05-Cplusplus教学/ch16-7-函数对象与谓词","函数对象与谓词","16.7",16070000,{"path":857,"stem":858,"title":859,"date":718,"chapter":860,"chapterSort":861,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-8-chang-yong-suan-fa","wiki/2023-10-05-Cplusplus教学/ch16-8-常用算法","常用算法","16.8",16080000,{"path":863,"stem":864,"title":865,"date":718,"chapter":866,"chapterSort":867,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-stl-ti-gao-bian-cheng","wiki/2023-10-05-Cplusplus教学/ch16-STL提高编程","STL提高编程","16",16000000,{"path":869,"stem":870,"title":871,"date":718,"chapter":872,"chapterSort":873,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch17-c-lei-xing-zhuan-huan","wiki/2023-10-05-Cplusplus教学/ch17-C++类型转换","C++类型转换","17",17000000,{"path":875,"stem":876,"title":97,"date":718,"chapter":877,"chapterSort":878,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-1-auto","wiki/2023-10-05-Cplusplus教学/ch18-1-auto","18.1",18010000,{"path":880,"stem":881,"title":882,"date":718,"chapter":883,"chapterSort":884,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-10-you-zhi-yin-yong-he-yi-dong-yu-yi","wiki/2023-10-05-Cplusplus教学/ch18-10-右值引用和移动语义","右值引用和移动语义","18.10",18100000,{"path":886,"stem":887,"title":888,"date":718,"chapter":889,"chapterSort":890,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-11-lambda-biao-da-shi","wiki/2023-10-05-Cplusplus教学/ch18-11-Lambda表达式","Lambda 表达式","18.11",18110000,{"path":892,"stem":893,"title":136,"date":718,"chapter":894,"chapterSort":895,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-12-std-function","wiki/2023-10-05-Cplusplus教学/ch18-12-std-function","18.12",18120000,{"path":897,"stem":898,"title":139,"date":718,"chapter":899,"chapterSort":900,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-13-std-bind","wiki/2023-10-05-Cplusplus教学/ch18-13-std-bind","18.13",18130000,{"path":902,"stem":903,"title":142,"date":718,"chapter":904,"chapterSort":905,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-14-std-optional","wiki/2023-10-05-Cplusplus教学/ch18-14-std-optional","18.14",18140000,{"path":907,"stem":908,"title":145,"date":718,"chapter":909,"chapterSort":910,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-15-std-variant","wiki/2023-10-05-Cplusplus教学/ch18-15-std-variant","18.15",18150000,{"path":912,"stem":913,"title":148,"date":718,"chapter":914,"chapterSort":915,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-16-std-span","wiki/2023-10-05-Cplusplus教学/ch18-16-std-span","18.16",18160000,{"path":917,"stem":918,"title":919,"date":718,"chapter":920,"chapterSort":921,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-17-std-format-print","wiki/2023-10-05-Cplusplus教学/ch18-17-std-format-print","std::format / std::print","18.17",18170000,{"path":923,"stem":924,"title":168,"date":718,"chapter":925,"chapterSort":926,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-18-std-chrono","wiki/2023-10-05-Cplusplus教学/ch18-18-std-chrono","18.18",18180000,{"path":928,"stem":929,"title":930,"date":718,"chapter":931,"chapterSort":932,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-1-std-thread","wiki/2023-10-05-Cplusplus教学/ch18-19-1-std-thread","std::thread 与 join","18.19.1",18190100,{"path":934,"stem":935,"title":936,"date":718,"chapter":937,"chapterSort":938,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-2-mutex-lock-guard","wiki/2023-10-05-Cplusplus教学/ch18-19-2-mutex-lock-guard","mutex 与 lock_guard","18.19.2",18190200,{"path":940,"stem":941,"title":942,"date":718,"chapter":943,"chapterSort":944,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-3-std-atomic","wiki/2023-10-05-Cplusplus教学/ch18-19-3-std-atomic","std::atomic","18.19.3",18190300,{"path":946,"stem":947,"title":948,"date":718,"chapter":949,"chapterSort":950,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-4-condition-variable","wiki/2023-10-05-Cplusplus教学/ch18-19-4-condition-variable","condition_variable","18.19.4",18190400,{"path":952,"stem":953,"title":954,"date":718,"chapter":955,"chapterSort":956,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-bing-fa-bian-cheng","wiki/2023-10-05-Cplusplus教学/ch18-19-并发编程","并发编程","18.19",18190000,{"path":958,"stem":959,"title":101,"date":718,"chapter":960,"chapterSort":961,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-2-nullptr","wiki/2023-10-05-Cplusplus教学/ch18-2-nullptr","18.2",18020000,{"path":963,"stem":964,"title":172,"date":718,"chapter":965,"chapterSort":966,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-20-std-filesystem","wiki/2023-10-05-Cplusplus教学/ch18-20-std-filesystem","18.20",18200000,{"path":968,"stem":969,"title":970,"date":718,"chapter":971,"chapterSort":972,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-21-modules-jian-jie","wiki/2023-10-05-Cplusplus教学/ch18-21-modules简介","modules 简介","18.21",18210000,{"path":974,"stem":975,"title":104,"date":718,"chapter":976,"chapterSort":977,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-3-using","wiki/2023-10-05-Cplusplus教学/ch18-3-using","18.3",18030000,{"path":979,"stem":980,"title":107,"date":718,"chapter":981,"chapterSort":982,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-4-enum-class","wiki/2023-10-05-Cplusplus教学/ch18-4-enum-class","18.4",18040000,{"path":984,"stem":985,"title":986,"date":718,"chapter":987,"chapterSort":988,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-5-fan-wei-for-xun-huan","wiki/2023-10-05-Cplusplus教学/ch18-5-范围for循环","范围 for 循环","18.5",18050000,{"path":990,"stem":991,"title":992,"date":718,"chapter":993,"chapterSort":994,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-6-jie-gou-hua-bang-ding","wiki/2023-10-05-Cplusplus教学/ch18-6-结构化绑定","结构化绑定","18.6",18060000,{"path":996,"stem":997,"title":121,"date":718,"chapter":998,"chapterSort":999,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-7-constexpr","wiki/2023-10-05-Cplusplus教学/ch18-7-constexpr","18.7",18070000,{"path":1001,"stem":1002,"title":1003,"date":718,"chapter":1004,"chapterSort":1005,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-8-raii","wiki/2023-10-05-Cplusplus教学/ch18-8-RAII","RAII","18.8",18080000,{"path":1007,"stem":1008,"title":1009,"date":718,"chapter":1010,"chapterSort":1011,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-9-zhi-neng-zhi-zhen","wiki/2023-10-05-Cplusplus教学/ch18-9-智能指针","智能指针","18.9",18090000,{"path":715,"stem":724,"title":5,"date":718,"chapter":716,"chapterSort":717,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},{"path":1014,"stem":1015,"title":1016,"date":718,"chapter":1017,"chapterSort":1018,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-1-ding-shi-qi-yu-yi-bu-io","wiki/2023-10-05-Cplusplus教学/ch19-1-1-定时器与异步IO","定时器与异步 IO","19.1.1",19010100,{"path":1020,"stem":1021,"title":1022,"date":718,"chapter":1023,"chapterSort":1024,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-2-boost-asio-ji-chu","wiki/2023-10-05-Cplusplus教学/ch19-1-2-Boost.Asio基础","Boost.Asio 基础","19.1.2",19010200,{"path":1026,"stem":1027,"title":1028,"date":718,"chapter":1029,"chapterSort":1030,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-3-chuan-kou-tong-xin","wiki/2023-10-05-Cplusplus教学/ch19-1-3-串口通信","串口通信","19.1.3",19010300,{"path":1032,"stem":1033,"title":1034,"date":718,"chapter":1035,"chapterSort":1036,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-4-tcp-tong-xin","wiki/2023-10-05-Cplusplus教学/ch19-1-4-TCP通信","TCP 通信","19.1.4",19010400,{"path":1038,"stem":1039,"title":1040,"date":718,"chapter":1041,"chapterSort":1042,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-5-udp-tong-xin","wiki/2023-10-05-Cplusplus教学/ch19-1-5-UDP通信","UDP 通信","19.1.5",19010500,{"path":1044,"stem":1045,"title":1046,"date":718,"chapter":1047,"chapterSort":1048,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-6-ji-qi-ren-gong-cheng-xie-fa-yu-ros2-ji-cheng","wiki/2023-10-05-Cplusplus教学/ch19-1-6-机器人工程写法与ROS2集成","机器人工程写法与 ROS2 集成","19.1.6",19010600,{"path":1050,"stem":1051,"title":1052,"date":718,"chapter":1053,"chapterSort":1054,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-boost-asio-yi-bu-io-ku","wiki/2023-10-05-Cplusplus教学/ch19-1-Boost.Asio异步IO库","Boost.Asio异步IO库","19.1",19010000,{"path":1056,"stem":1057,"title":1058,"date":718,"chapter":1059,"chapterSort":1060,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-2-eigen-xian-xing-dai-shu-ku","wiki/2023-10-05-Cplusplus教学/ch19-2-Eigen线性代数库","Eigen线性代数库","19.2",19020000,{"path":1062,"stem":1063,"title":1064,"date":718,"chapter":1065,"chapterSort":1066,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-3-opencv-ji-suan-ji-shi-jue-ku","wiki/2023-10-05-Cplusplus教学/ch19-3-OpenCV计算机视觉库","OpenCV计算机视觉库","19.3",19030000,{"path":1068,"stem":1069,"title":1070,"date":718,"chapter":1071,"chapterSort":1072,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-4-pcl-dian-yun-ku","wiki/2023-10-05-Cplusplus教学/ch19-4-PCL点云库","PCL点云库","19.4",19040000,{"path":1074,"stem":1075,"title":1076,"date":718,"chapter":1077,"chapterSort":1078,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-5-sophus-li-qun-li-dai-shu-ku","wiki/2023-10-05-Cplusplus教学/ch19-5-Sophus李群李代数库","Sophus 李群李代数库","19.5",19050000,{"path":1080,"stem":1081,"title":1082,"date":718,"chapter":1083,"chapterSort":1084,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-chang-yong-ku","wiki/2023-10-05-Cplusplus教学/ch19-常用库","常用库学习","19",19000000,{"path":1086,"stem":1087,"title":1088,"date":718,"chapter":1089,"chapterSort":1090,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch2-shu-ju-lei-xing-yu-shu-ju-cun-fang","wiki/2023-10-05-Cplusplus教学/ch2-数据类型与数据存放","数据类型与数据存放","2",2000000,{"path":1092,"stem":1093,"title":1094,"date":718,"chapter":1095,"chapterSort":1096,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch3-shu-ru-shu-chu","wiki/2023-10-05-Cplusplus教学/ch3-输入输出","输入输出","3",3000000,{"path":1098,"stem":1099,"title":1100,"date":718,"chapter":1101,"chapterSort":1102,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch4-yun-suan-fu","wiki/2023-10-05-Cplusplus教学/ch4-运算符","运算符","4",4000000,{"path":1104,"stem":1105,"title":1106,"date":718,"chapter":1107,"chapterSort":1108,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch5-cheng-xu-liu-cheng-jie-gou","wiki/2023-10-05-Cplusplus教学/ch5-程序流程结构","程序流程结构","5",5000000,{"path":1110,"stem":1111,"title":1112,"date":718,"chapter":1113,"chapterSort":1114,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch6-shu-zu","wiki/2023-10-05-Cplusplus教学/ch6-数组","数组","6",6000000,{"path":1116,"stem":1117,"title":1118,"date":718,"chapter":1119,"chapterSort":1120,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch7-han-shu-yu-tou-wen-jian","wiki/2023-10-05-Cplusplus教学/ch7-函数与头文件","函数与头文件","7",7000000,{"path":1122,"stem":1123,"title":1124,"date":718,"chapter":1125,"chapterSort":1126,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch8-zhi-zhen","wiki/2023-10-05-Cplusplus教学/ch8-指针","指针","8",8000000,{"path":1128,"stem":1129,"title":1130,"date":718,"chapter":1131,"chapterSort":1132,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":725},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch9-jie-gou-ti-yu-gong-yong-ti","wiki/2023-10-05-Cplusplus教学/ch9-结构体与共用体","结构体与共用体","9",9000000,{"path":721,"stem":1134,"title":1135,"date":718,"chapter":727,"chapterSort":1136,"docKey":720,"docRoot":721,"docTitle":722,"isWikiDoc":726,"isWikiIndex":726},"wiki/2023-10-05-Cplusplus教学/index","C/C++教程",0,{"variants":1138},[1139,1142,1145,1148,1151],{"path":1140,"localeSlug":1141,"i18nKey":724},"/en-us/wiki/2023-10-05-cplusplus-jiao-xue/ch18-xian-dai-c","en-us",{"path":1143,"localeSlug":1144,"i18nKey":724},"/zh-hant/wiki/2023-10-05-cplusplus-jiao-xue/ch18-xian-dai-c","zh-hant",{"path":1146,"localeSlug":1147,"i18nKey":724},"/zh-hk/wiki/2023-10-05-cplusplus-jiao-xue/ch18-xian-dai-c","zh-hk",{"path":1149,"localeSlug":1150,"i18nKey":724},"/zh-tw/wiki/2023-10-05-cplusplus-jiao-xue/ch18-xian-dai-c","zh-tw",{"path":715,"localeSlug":730,"i18nKey":724},[1140,728,1143,728,1146,728,1149,728,715,728],1780663034267]