[{"data":1,"prerenderedAt":4995},["ShallowReactive",2],{"navigation":3,"\u002Fch11\u002Fstd_sort":909,"\u002Fch11\u002Fstd_sort-surround":4992},[4,36,56,96,230,270,414,457,508,583,649,685,767,864,900,904],{"title":5,"icon":6,"path":7,"stem":8,"children":9},"附录","i-lucide-bookmark","\u002Fappendix","appendix",[10,12,16,20,24,28,32],{"title":5,"path":7,"stem":11,"icon":6},"appendix\u002Findex",{"title":13,"path":14,"stem":15,"icon":6},"命令行界面","\u002Fappendix\u002Fcli","appendix\u002Fcli",{"title":17,"path":18,"stem":19,"icon":6},"代码风格","\u002Fappendix\u002Fcoding_style","appendix\u002Fcoding_style",{"title":21,"path":22,"stem":23,"icon":6},"关键字列表","\u002Fappendix\u002Fkeyword","appendix\u002Fkeyword",{"title":25,"path":26,"stem":27,"icon":6},"运算符优先级和结合方向","\u002Fappendix\u002Foperator","appendix\u002Foperator",{"title":29,"path":30,"stem":31,"icon":6},"预处理指令","\u002Fappendix\u002Fpreprocessor","appendix\u002Fpreprocessor",{"title":33,"path":34,"stem":35,"icon":6},"值类别","\u002Fappendix\u002Fvalue_category","appendix\u002Fvalue_category",{"title":37,"icon":38,"path":39,"stem":40,"children":41},"第〇章 基本概念","i-lucide-monitor","\u002Fch00","ch00",[42,44,48,52],{"title":37,"path":39,"stem":43,"icon":38},"ch00\u002Findex",{"title":45,"path":46,"stem":47,"icon":38},"计算机","\u002Fch00\u002Fcomputer","ch00\u002Fcomputer",{"title":49,"path":50,"stem":51,"icon":38},"编程","\u002Fch00\u002Fprogramming","ch00\u002Fprogramming",{"title":53,"path":54,"stem":55,"icon":38},"编程语言","\u002Fch00\u002Fprogramming_language","ch00\u002Fprogramming_language",{"title":57,"icon":58,"path":59,"stem":60,"children":61},"第一章 感性认识 C++ 程序","i-lucide-book-open","\u002Fch01","ch01",[62,64,68,72,76,80,84,88,92],{"title":57,"path":59,"stem":63,"icon":58},"ch01\u002Findex",{"title":65,"path":66,"stem":67,"icon":58},"赋值和分支","\u002Fch01\u002Fassignment_and_if","ch01\u002Fassignment_and_if",{"title":69,"path":70,"stem":71,"icon":58},"最麻烦的门槛","\u002Fch01\u002Fenvironment","ch01\u002Fenvironment",{"title":73,"path":74,"stem":75,"icon":58},"第一个 C++ 程序","\u002Fch01\u002Ffirst_program","ch01\u002Ffirst_program",{"title":77,"path":78,"stem":79,"icon":58},"输入","\u002Fch01\u002Finput","ch01\u002Finput",{"title":81,"path":82,"stem":83,"icon":58},"综合运用","\u002Fch01\u002Fintegrated_use","ch01\u002Fintegrated_use",{"title":85,"path":86,"stem":87,"icon":58},"循环","\u002Fch01\u002Floop","ch01\u002Floop",{"title":89,"path":90,"stem":91,"icon":58},"更多的输出","\u002Fch01\u002Fmore_output","ch01\u002Fmore_output",{"title":93,"path":94,"stem":95,"icon":58},"总结","\u002Fch01\u002Fsummary","ch01\u002Fsummary",{"title":97,"path":98,"stem":99,"children":100,"icon":102},"第二章 理性认识 C++ 程序","\u002Fch02","ch02\u002Findex",[101,103,149,188,227],{"title":97,"path":98,"stem":99,"icon":102},"i-lucide-code",{"title":104,"icon":105,"path":106,"stem":107,"children":108},"第 1 部分 数据成分","i-lucide-database","\u002Fch02\u002Fpart1","ch02\u002Fpart1\u002Findex",[109,110,114,118,122,126],{"title":104,"path":106,"stem":107,"icon":105},{"title":111,"path":112,"stem":113,"icon":105},"初识数组","\u002Fch02\u002Fpart1\u002Farray_glance","ch02\u002Fpart1\u002Farray_glance",{"title":115,"path":116,"stem":117,"icon":105},"常量","\u002Fch02\u002Fpart1\u002Fconstant","ch02\u002Fpart1\u002Fconstant",{"title":119,"path":120,"stem":121,"icon":105},"声明语句","\u002Fch02\u002Fpart1\u002Fdeclaration_statement","ch02\u002Fpart1\u002Fdeclaration_statement",{"title":123,"path":124,"stem":125,"icon":105},"只读变量","\u002Fch02\u002Fpart1\u002Freadonly_variable","ch02\u002Fpart1\u002Freadonly_variable",{"title":127,"icon":128,"path":129,"stem":130,"children":131},"类型系统","i-lucide-dna","\u002Fch02\u002Fpart1\u002Ftype_system","ch02\u002Fpart1\u002Ftype_system\u002Findex",[132,133,137,141,145],{"title":127,"path":129,"stem":130,"icon":128},{"title":134,"path":135,"stem":136,"icon":128},"布尔类型","\u002Fch02\u002Fpart1\u002Ftype_system\u002Fboolean_type","ch02\u002Fpart1\u002Ftype_system\u002Fboolean_type",{"title":138,"path":139,"stem":140,"icon":128},"字符类型","\u002Fch02\u002Fpart1\u002Ftype_system\u002Fcharacter_type","ch02\u002Fpart1\u002Ftype_system\u002Fcharacter_type",{"title":142,"path":143,"stem":144,"icon":128},"浮点类型","\u002Fch02\u002Fpart1\u002Ftype_system\u002Ffloat_type","ch02\u002Fpart1\u002Ftype_system\u002Ffloat_type",{"title":146,"path":147,"stem":148,"icon":128},"整型","\u002Fch02\u002Fpart1\u002Ftype_system\u002Finteger_type","ch02\u002Fpart1\u002Ftype_system\u002Finteger_type",{"title":150,"icon":151,"path":152,"stem":153,"children":154},"第 2 部分 运算成分","i-lucide-calculator","\u002Fch02\u002Fpart2","ch02\u002Fpart2\u002Findex",[155,156,160,164,168,172,176,180,184],{"title":150,"path":152,"stem":153,"icon":151},{"title":157,"path":158,"stem":159,"icon":151},"算术运算符","\u002Fch02\u002Fpart2\u002Farithmetic_operator","ch02\u002Fpart2\u002Farithmetic_operator",{"title":161,"path":162,"stem":163,"icon":151},"赋值运算符","\u002Fch02\u002Fpart2\u002Fassignment_operator","ch02\u002Fpart2\u002Fassignment_operator",{"title":165,"path":166,"stem":167,"icon":151},"位运算符（选读）","\u002Fch02\u002Fpart2\u002Fbit_operator","ch02\u002Fpart2\u002Fbit_operator",{"title":169,"path":170,"stem":171,"icon":151},"关系运算符","\u002Fch02\u002Fpart2\u002Fcomparison_operator","ch02\u002Fpart2\u002Fcomparison_operator",{"title":173,"path":174,"stem":175,"icon":151},"算术类型隐式转换","\u002Fch02\u002Fpart2\u002Fimplicit_conversion","ch02\u002Fpart2\u002Fimplicit_conversion",{"title":177,"path":178,"stem":179,"icon":151},"自增减运算符","\u002Fch02\u002Fpart2\u002Fincdec_operator","ch02\u002Fpart2\u002Fincdec_operator",{"title":181,"path":182,"stem":183,"icon":151},"逻辑运算符","\u002Fch02\u002Fpart2\u002Flogical_operator","ch02\u002Fpart2\u002Flogical_operator",{"title":185,"path":186,"stem":187,"icon":151},"其它常用运算符","\u002Fch02\u002Fpart2\u002Fother_operator","ch02\u002Fpart2\u002Fother_operator",{"title":189,"icon":190,"path":191,"stem":192,"children":193},"第 3 部分 控制成分","i-lucide-git-branch","\u002Fch02\u002Fpart3","ch02\u002Fpart3\u002Findex",[194,195,199,203,207,211,215,219,223],{"title":189,"path":191,"stem":192,"icon":190},{"title":196,"path":197,"stem":198,"icon":190},"复合语句","\u002Fch02\u002Fpart3\u002Fcompound_statement","ch02\u002Fpart3\u002Fcompound_statement",{"title":200,"path":201,"stem":202,"icon":190},"for 语句","\u002Fch02\u002Fpart3\u002Ffor_statement","ch02\u002Fpart3\u002Ffor_statement",{"title":204,"path":205,"stem":206,"icon":190},"if 语句","\u002Fch02\u002Fpart3\u002Fif_statement","ch02\u002Fpart3\u002Fif_statement",{"title":208,"path":209,"stem":210,"icon":190},"跳转语句","\u002Fch02\u002Fpart3\u002Fjump_statement","ch02\u002Fpart3\u002Fjump_statement",{"title":212,"path":213,"stem":214,"icon":190},"空语句","\u002Fch02\u002Fpart3\u002Fnull_statement","ch02\u002Fpart3\u002Fnull_statement",{"title":216,"path":217,"stem":218,"icon":190},"作用域","\u002Fch02\u002Fpart3\u002Fscope","ch02\u002Fpart3\u002Fscope",{"title":220,"path":221,"stem":222,"icon":190},"switch 语句","\u002Fch02\u002Fpart3\u002Fswitch_statement","ch02\u002Fpart3\u002Fswitch_statement",{"title":224,"path":225,"stem":226,"icon":190},"while 语句","\u002Fch02\u002Fpart3\u002Fwhile_statement","ch02\u002Fpart3\u002Fwhile_statement",{"title":93,"path":228,"stem":229,"icon":102},"\u002Fch02\u002Fsummary","ch02\u002Fsummary",{"title":231,"icon":232,"path":233,"stem":234,"children":235},"第三章 过程式编程","i-lucide-function-square","\u002Fch03","ch03",[236,239,243,247,251,255,259,263,267],{"title":231,"path":233,"stem":237,"icon":238},"ch03\u002Findex","i-lucide-square-function",{"title":240,"path":241,"stem":242,"icon":232},"函数","\u002Fch03\u002Ffunction","ch03\u002Ffunction",{"title":244,"path":245,"stem":246,"icon":232},"函数的定义、声明和调用","\u002Fch03\u002Ffunction_definition","ch03\u002Ffunction_definition",{"title":248,"path":249,"stem":250,"icon":232},"函数的执行","\u002Fch03\u002Ffunction_execution","ch03\u002Ffunction_execution",{"title":252,"path":253,"stem":254,"icon":232},"初识函数","\u002Fch03\u002Ffunction_glance","ch03\u002Ffunction_glance",{"title":256,"path":257,"stem":258,"icon":232},"递归","\u002Fch03\u002Frecursion","ch03\u002Frecursion",{"title":260,"path":261,"stem":262,"icon":232},"重新认识 C++ 程序","\u002Fch03\u002Freview_cpp","ch03\u002Freview_cpp",{"title":264,"path":265,"stem":266,"icon":232},"再谈作用域","\u002Fch03\u002Fscope_again","ch03\u002Fscope_again",{"title":93,"path":268,"stem":269,"icon":232},"\u002Fch03\u002Fsummary","ch03\u002Fsummary",{"title":271,"icon":272,"path":273,"stem":274,"children":275},"第四章 POD 类型与结构","i-lucide-layers","\u002Fch04","ch04",[276,278,301,316,320,338,365,392,407,410],{"title":271,"path":273,"stem":277,"icon":272},"ch04\u002Findex",{"title":279,"icon":280,"path":281,"stem":282,"children":283},"数组","i-lucide-grid","\u002Fch04\u002Farray","ch04\u002Farray\u002Findex",[284,285,289,293,297],{"title":279,"path":281,"stem":282,"icon":280},{"title":286,"path":287,"stem":288,"icon":280},"二维数组","\u002Fch04\u002Farray\u002F2d_array","ch04\u002Farray\u002F2d_array",{"title":290,"path":291,"stem":292,"icon":280},"数组的定义和初始化","\u002Fch04\u002Farray\u002Farray_init","ch04\u002Farray\u002Farray_init",{"title":294,"path":295,"stem":296,"icon":280},"数组的用途","\u002Fch04\u002Farray\u002Farray_usage","ch04\u002Farray\u002Farray_usage",{"title":298,"path":299,"stem":300,"icon":280},"C 风格字符串","\u002Fch04\u002Farray\u002Fc_string","ch04\u002Farray\u002Fc_string",{"title":302,"icon":303,"path":304,"stem":305,"children":306},"迁移到 C 语言","i-lucide-arrow-right-left","\u002Fch04\u002Fcompare_with_c","ch04\u002Fcompare_with_c\u002Findex",[307,308,312],{"title":302,"path":304,"stem":305,"icon":303},{"title":309,"path":310,"stem":311,"icon":303},"需要注意的 C 特性","\u002Fch04\u002Fcompare_with_c\u002Fc_feature","ch04\u002Fcompare_with_c\u002Fc_feature",{"title":313,"path":314,"stem":315,"icon":303},"C 输入输出","\u002Fch04\u002Fcompare_with_c\u002Fc_io","ch04\u002Fcompare_with_c\u002Fc_io",{"title":317,"path":318,"stem":319,"icon":272},"枚举","\u002Fch04\u002Fenum","ch04\u002Fenum",{"title":321,"path":322,"stem":323,"children":324,"icon":326},"输入输出成分","\u002Fch04\u002Fio","ch04\u002Fio\u002Findex",[325,327,330,334],{"title":321,"path":322,"stem":323,"icon":326},"i-lucide-terminal",{"title":77,"path":328,"stem":329,"icon":326},"\u002Fch04\u002Fio\u002Finput","ch04\u002Fio\u002Finput",{"title":331,"path":332,"stem":333,"icon":326},"输入失败状态","\u002Fch04\u002Fio\u002Finput_fail","ch04\u002Fio\u002Finput_fail",{"title":335,"path":336,"stem":337,"icon":326},"输出","\u002Fch04\u002Fio\u002Foutput","ch04\u002Fio\u002Foutput",{"title":339,"icon":340,"path":341,"stem":342,"children":343},"链表","i-lucide-list","\u002Fch04\u002Flist","ch04\u002Flist\u002Findex",[344,345,349,353,357,361],{"title":339,"path":341,"stem":342,"icon":340},{"title":346,"path":347,"stem":348,"icon":340},"new[] 和 delete[]","\u002Fch04\u002Flist\u002Farr_new_del","ch04\u002Flist\u002Farr_new_del",{"title":350,"path":351,"stem":352,"icon":340},"链表的增删","\u002Fch04\u002Flist\u002Flist_add_del","ch04\u002Flist\u002Flist_add_del",{"title":354,"path":355,"stem":356,"icon":340},"链表的构建","\u002Fch04\u002Flist\u002Flist_construct","ch04\u002Flist\u002Flist_construct",{"title":358,"path":359,"stem":360,"icon":340},"安全性","\u002Fch04\u002Flist\u002Fsafety","ch04\u002Flist\u002Fsafety",{"title":362,"path":363,"stem":364,"icon":340},"存储期","\u002Fch04\u002Flist\u002Fstorage_duration","ch04\u002Flist\u002Fstorage_duration",{"title":366,"path":367,"stem":368,"children":369,"icon":371},"指针","\u002Fch04\u002Fpointer","ch04\u002Fpointer\u002Findex",[370,372,376,380,384,388],{"title":366,"path":367,"stem":368,"icon":371},"i-lucide-dot",{"title":373,"path":374,"stem":375,"icon":371},"何为指针","\u002Fch04\u002Fpointer\u002Fpointer","ch04\u002Fpointer\u002Fpointer",{"title":377,"path":378,"stem":379,"icon":371},"指针和数组","\u002Fch04\u002Fpointer\u002Fpointer_and_array","ch04\u002Fpointer\u002Fpointer_and_array",{"title":381,"path":382,"stem":383,"icon":371},"指针的定义 Ⅰ","\u002Fch04\u002Fpointer\u002Fpointer_def","ch04\u002Fpointer\u002Fpointer_def",{"title":385,"path":386,"stem":387,"icon":371},"指针的定义 Ⅱ","\u002Fch04\u002Fpointer\u002Fpointer_def_2","ch04\u002Fpointer\u002Fpointer_def_2",{"title":389,"path":390,"stem":391,"icon":371},"指针的简单使用","\u002Fch04\u002Fpointer\u002Fpointer_usage","ch04\u002Fpointer\u002Fpointer_usage",{"title":393,"path":394,"stem":395,"children":396,"icon":398},"结构体","\u002Fch04\u002Fstruct","ch04\u002Fstruct\u002Findex",[397,399,403],{"title":393,"path":394,"stem":395,"icon":398},"i-lucide-box",{"title":400,"path":401,"stem":402,"icon":398},"结构体的定义","\u002Fch04\u002Fstruct\u002Fstruct_def","ch04\u002Fstruct\u002Fstruct_def",{"title":404,"path":405,"stem":406,"icon":398},"结构体的使用","\u002Fch04\u002Fstruct\u002Fstruct_usage","ch04\u002Fstruct\u002Fstruct_usage",{"title":93,"path":408,"stem":409,"icon":272},"\u002Fch04\u002Fsummary","ch04\u002Fsummary",{"title":411,"path":412,"stem":413,"icon":272},"联合体","\u002Fch04\u002Funion","ch04\u002Funion",{"title":415,"icon":416,"path":417,"stem":418,"children":419},"第五章 初探面向对象","i-lucide-copy","\u002Fch05","ch05",[420,422,426,430,434,438,442,446,450,454],{"title":415,"path":417,"stem":421,"icon":416},"ch05\u002Findex",{"title":423,"path":424,"stem":425,"icon":416},"构造函数","\u002Fch05\u002Fconstructor","ch05\u002Fconstructor",{"title":427,"path":428,"stem":429,"icon":416},"复制构造函数","\u002Fch05\u002Fcopy_constructor","ch05\u002Fcopy_constructor",{"title":431,"path":432,"stem":433,"icon":416},"预置构造函数","\u002Fch05\u002Fdefaulted_constructor","ch05\u002Fdefaulted_constructor",{"title":435,"path":436,"stem":437,"icon":416},"例子：简单的字符串","\u002Fch05\u002Feasy_string","ch05\u002Feasy_string",{"title":439,"path":440,"stem":441,"icon":416},"收尾工作","\u002Fch05\u002Fmisc","ch05\u002Fmisc",{"title":443,"path":444,"stem":445,"icon":416},"重载","\u002Fch05\u002Foverload","ch05\u002Foverload",{"title":447,"path":448,"stem":449,"icon":416},"引用","\u002Fch05\u002Freference","ch05\u002Freference",{"title":451,"path":452,"stem":453,"icon":416},"浅复制与深复制","\u002Fch05\u002Fshallow_deep_copy","ch05\u002Fshallow_deep_copy",{"title":93,"path":455,"stem":456,"icon":416},"\u002Fch05\u002Fsummary","ch05\u002Fsummary",{"title":458,"icon":459,"path":460,"stem":461,"children":462},"第六章 运算符重载","i-lucide-component","\u002Fch06","ch06",[463,465,469,473,477,481,485,489,493,497,501,504],{"title":458,"path":460,"stem":464,"icon":459},"ch06\u002Findex",{"title":466,"path":467,"stem":468,"icon":459},"赋值运算符重载","\u002Fch06\u002Fassignment_overload","ch06\u002Fassignment_overload",{"title":470,"path":471,"stem":472,"icon":459},"赋值与初始化","\u002Fch06\u002Fassignment_vs_construct","ch06\u002Fassignment_vs_construct",{"title":474,"path":475,"stem":476,"icon":459},"类型转换重载","\u002Fch06\u002Fcast_overload","ch06\u002Fcast_overload",{"title":478,"path":479,"stem":480,"icon":459},"只读成员函数","\u002Fch06\u002Fconst_member_function","ch06\u002Fconst_member_function",{"title":482,"path":483,"stem":484,"icon":459},"友元","\u002Fch06\u002Ffriend","ch06\u002Ffriend",{"title":486,"path":487,"stem":488,"icon":459},"类外定义成员函数","\u002Fch06\u002Fnoninline_member_function","ch06\u002Fnoninline_member_function",{"title":490,"path":491,"stem":492,"icon":459},"非成员的运算符重载","\u002Fch06\u002Fnonmember_operator","ch06\u002Fnonmember_operator",{"title":494,"path":495,"stem":496,"icon":459},"特殊运算符重载","\u002Fch06\u002Fspecial_operator_overload","ch06\u002Fspecial_operator_overload",{"title":498,"path":499,"stem":500,"icon":459},"静态成员","\u002Fch06\u002Fstatic_member","ch06\u002Fstatic_member",{"title":93,"path":502,"stem":503,"icon":459},"\u002Fch06\u002Fsummary","ch06\u002Fsummary",{"title":505,"path":506,"stem":507,"icon":459},"`this` 指针","\u002Fch06\u002Fthis","ch06\u002Fthis",{"title":509,"path":510,"stem":511,"children":512,"icon":190},"第七章 继承与多态","\u002Fch07","ch07\u002Findex",[513,514,541,545,549,580],{"title":509,"path":510,"stem":511,"icon":190},{"title":515,"icon":516,"path":517,"stem":518,"children":519},"继承关系","i-lucide-share","\u002Fch07\u002Finheritance","ch07\u002Finheritance\u002Findex",[520,521,525,529,533,537],{"title":515,"path":517,"stem":518,"icon":516},{"title":522,"path":523,"stem":524,"icon":516},"关于成员名","\u002Fch07\u002Finheritance\u002Fabout_member_name","ch07\u002Finheritance\u002Fabout_member_name",{"title":526,"path":527,"stem":528,"icon":516},"派生类的构造","\u002Fch07\u002Finheritance\u002Fderived_constructor","ch07\u002Finheritance\u002Fderived_constructor",{"title":530,"path":531,"stem":532,"icon":516},"继承中的隐式转换","\u002Fch07\u002Finheritance\u002Fimplicit_cast_in_inheritance","ch07\u002Finheritance\u002Fimplicit_cast_in_inheritance",{"title":534,"path":535,"stem":536,"icon":516},"其它小问题","\u002Fch07\u002Finheritance\u002Fmisc","ch07\u002Finheritance\u002Fmisc",{"title":538,"path":539,"stem":540,"icon":516},"保护成员","\u002Fch07\u002Finheritance\u002Fprotected_member","ch07\u002Finheritance\u002Fprotected_member",{"title":542,"path":543,"stem":544,"icon":190},"多重继承","\u002Fch07\u002Fmi","ch07\u002Fmi",{"title":546,"path":547,"stem":548,"icon":190},"简单的对象关系","\u002Fch07\u002Fobject_relationships","ch07\u002Fobject_relationships",{"title":550,"icon":551,"path":552,"stem":553,"children":554},"多态","i-lucide-refresh","\u002Fch07\u002Fpolymorphism","ch07\u002Fpolymorphism\u002Findex",[555,556,560,564,568,572,576],{"title":550,"path":552,"stem":553,"icon":551},{"title":557,"path":558,"stem":559,"icon":551},"抽象类","\u002Fch07\u002Fpolymorphism\u002Fabstract_class","ch07\u002Fpolymorphism\u002Fabstract_class",{"title":561,"path":562,"stem":563,"icon":551},"C++ 风格类型转换","\u002Fch07\u002Fpolymorphism\u002Fcpp_cast","ch07\u002Fpolymorphism\u002Fcpp_cast",{"title":565,"path":566,"stem":567,"icon":551},"`override` 与 `final`","\u002Fch07\u002Fpolymorphism\u002Foverride_and_final","ch07\u002Fpolymorphism\u002Foverride_and_final",{"title":569,"path":570,"stem":571,"icon":551},"RTTI","\u002Fch07\u002Fpolymorphism\u002Frtti","ch07\u002Fpolymorphism\u002Frtti",{"title":573,"path":574,"stem":575,"icon":551},"虚析构函数","\u002Fch07\u002Fpolymorphism\u002Fvirtual_destructor","ch07\u002Fpolymorphism\u002Fvirtual_destructor",{"title":577,"path":578,"stem":579,"icon":551},"虚函数","\u002Fch07\u002Fpolymorphism\u002Fvirtual_function","ch07\u002Fpolymorphism\u002Fvirtual_function",{"title":93,"path":581,"stem":582,"icon":190},"\u002Fch07\u002Fsummary","ch07\u002Fsummary",{"title":584,"icon":585,"path":586,"stem":587,"children":588},"第八章 模板基础","i-lucide-layout-template","\u002Fch08","ch08",[589,591,595,599,603,607,646],{"title":584,"path":586,"stem":590,"icon":585},"ch08\u002Findex",{"title":592,"path":593,"stem":594,"icon":585},"类模板","\u002Fch08\u002Fclass_template","ch08\u002Fclass_template",{"title":596,"path":597,"stem":598,"icon":585},"默认实参","\u002Fch08\u002Fdefault_argument","ch08\u002Fdefault_argument",{"title":600,"path":601,"stem":602,"icon":585},"函数模板","\u002Fch08\u002Ffunction_template","ch08\u002Ffunction_template",{"title":604,"path":605,"stem":606,"icon":585},"非类型模板参数","\u002Fch08\u002Fnontype_template_param","ch08\u002Fnontype_template_param",{"title":608,"icon":609,"path":610,"stem":611,"children":612},"STL 容器和迭代器","i-lucide-container","\u002Fch08\u002Fstl_containers","ch08\u002Fstl_containers\u002Findex",[613,614,618,622,626,630,634,638,642],{"title":608,"path":610,"stem":611,"icon":609},{"title":615,"path":616,"stem":617,"icon":609},"容器适配器","\u002Fch08\u002Fstl_containers\u002Fadaptors","ch08\u002Fstl_containers\u002Fadaptors",{"title":619,"path":620,"stem":621,"icon":609},"迭代器的概念","\u002Fch08\u002Fstl_containers\u002Fiterator_concept","ch08\u002Fstl_containers\u002Fiterator_concept",{"title":623,"path":624,"stem":625,"icon":609},"初识迭代器","\u002Fch08\u002Fstl_containers\u002Fiterator_glance","ch08\u002Fstl_containers\u002Fiterator_glance",{"title":627,"path":628,"stem":629,"icon":609},"迭代器的用途","\u002Fch08\u002Fstl_containers\u002Fiterator_usage","ch08\u002Fstl_containers\u002Fiterator_usage",{"title":631,"path":632,"stem":633,"icon":609},"`std::map`","\u002Fch08\u002Fstl_containers\u002Fmap","ch08\u002Fstl_containers\u002Fmap",{"title":635,"path":636,"stem":637,"icon":609},"其它顺序容器","\u002Fch08\u002Fstl_containers\u002Fother_sequence","ch08\u002Fstl_containers\u002Fother_sequence",{"title":639,"path":640,"stem":641,"icon":609},"`std::set`","\u002Fch08\u002Fstl_containers\u002Fset","ch08\u002Fstl_containers\u002Fset",{"title":643,"path":644,"stem":645,"icon":609},"`std::vector`","\u002Fch08\u002Fstl_containers\u002Fvector","ch08\u002Fstl_containers\u002Fvector",{"title":93,"path":647,"stem":648,"icon":585},"\u002Fch08\u002Fsummary","ch08\u002Fsummary",{"title":650,"icon":651,"path":652,"stem":653,"children":654},"第九章 链接","i-lucide-link","\u002Fch09","ch09",[655,657,661,665,669,673,677,681],{"title":650,"path":652,"stem":656,"icon":651},"ch09\u002Findex",{"title":658,"path":659,"stem":660,"icon":651},"C 中的链接","\u002Fch09\u002Fc_linking","ch09\u002Fc_linking",{"title":662,"path":663,"stem":664,"icon":651},"多文件编译实践","\u002Fch09\u002Fcompile_multiple_files","ch09\u002Fcompile_multiple_files",{"title":666,"path":667,"stem":668,"icon":651},"模板中的友元","\u002Fch09\u002Ffriend_in_template","ch09\u002Ffriend_in_template",{"title":670,"path":671,"stem":672,"icon":651},"内联","\u002Fch09\u002Finline","ch09\u002Finline",{"title":674,"path":675,"stem":676,"icon":651},"单一定义原则","\u002Fch09\u002Fodr","ch09\u002Fodr",{"title":678,"path":679,"stem":680,"icon":651},"符号和连接","\u002Fch09\u002Fsymbol_and_linkage","ch09\u002Fsymbol_and_linkage",{"title":682,"path":683,"stem":684,"icon":651},"模板的链接","\u002Fch09\u002Ftemplate_linking","ch09\u002Ftemplate_linking",{"title":686,"icon":687,"path":688,"stem":689,"children":690},"第十章 常用库介绍 \u003CBadge type=\"warning\" text=\"TBC\" \u002F>","i-lucide-hard-drive","\u002Fch10","ch10",[691,694,717,732,736,740],{"title":692,"path":688,"stem":693,"icon":687},"第十章 常用库介绍","ch10\u002Findex",{"title":695,"icon":696,"path":697,"stem":698,"children":699},"代数数据类型","i-lucide-shapes","\u002Fch10\u002Fadt","ch10\u002Fadt\u002Findex",[700,701,705,709,713],{"title":695,"path":697,"stem":698,"icon":696},{"title":702,"path":703,"stem":704,"icon":696},"顶类型 `std::any`","\u002Fch10\u002Fadt\u002Fany","ch10\u002Fadt\u002Fany",{"title":706,"path":707,"stem":708,"icon":696},"底类型","\u002Fch10\u002Fadt\u002Fnoreturn","ch10\u002Fadt\u002Fnoreturn",{"title":710,"path":711,"stem":712,"icon":696},"通用积类型 `std::tuple`","\u002Fch10\u002Fadt\u002Ftuple","ch10\u002Fadt\u002Ftuple",{"title":714,"path":715,"stem":716,"icon":696},"通用和类型 `std::variant`","\u002Fch10\u002Fadt\u002Fvariant","ch10\u002Fadt\u002Fvariant",{"title":718,"icon":719,"path":720,"stem":721,"children":722},"文件读写","i-lucide-file-text","\u002Fch10\u002Ffile_io","ch10\u002Ffile_io\u002Findex",[723,724,728],{"title":718,"path":720,"stem":721,"icon":719},{"title":725,"path":726,"stem":727,"icon":719},"C 风格输入输出","\u002Fch10\u002Ffile_io\u002Fc_io","ch10\u002Ffile_io\u002Fc_io",{"title":729,"path":730,"stem":731,"icon":719},"流式输入输出","\u002Fch10\u002Ffile_io\u002Fstream","ch10\u002Ffile_io\u002Fstream",{"title":733,"path":734,"stem":735,"icon":687},"文件系统","\u002Fch10\u002Ffilesystem","ch10\u002Ffilesystem",{"title":737,"path":738,"stem":739,"icon":687},"伪随机数生成","\u002Fch10\u002Frandom","ch10\u002Frandom",{"title":741,"path":742,"stem":743,"children":744,"icon":746},"移动语义与智能指针","\u002Fch10\u002Fsmart_pointer","ch10\u002Fsmart_pointer\u002Findex",[745,747,751,755,759,763],{"title":741,"path":742,"stem":743,"icon":746},"i-lucide-pointer",{"title":748,"path":749,"stem":750,"icon":746},"`std::move` 与转发引用","\u002Fch10\u002Fsmart_pointer\u002Fmove_and_forward","ch10\u002Fsmart_pointer\u002Fmove_and_forward",{"title":752,"path":753,"stem":754,"icon":746},"所有权","\u002Fch10\u002Fsmart_pointer\u002Fownership","ch10\u002Fsmart_pointer\u002Fownership",{"title":756,"path":757,"stem":758,"icon":746},"右值引用","\u002Fch10\u002Fsmart_pointer\u002Frvalue_reference","ch10\u002Fsmart_pointer\u002Frvalue_reference",{"title":760,"path":761,"stem":762,"icon":746},"`std::shared_ptr`","\u002Fch10\u002Fsmart_pointer\u002Fshared_ptr","ch10\u002Fsmart_pointer\u002Fshared_ptr",{"title":764,"path":765,"stem":766,"icon":746},"特殊成员函数","\u002Fch10\u002Fsmart_pointer\u002Fspecial_member_function","ch10\u002Fsmart_pointer\u002Fspecial_member_function",{"title":768,"icon":769,"path":770,"stem":771,"children":772},"第十一章 函数式编程","i-lucide-sparkles","\u002Fch11","ch11",[773,775,794,821,825],{"title":768,"path":770,"stem":774,"icon":769},"ch11\u002Findex",{"title":776,"icon":777,"path":778,"stem":779,"children":780},"语法进阶","i-lucide-graduation-cap","\u002Fch11\u002Fadvanced","ch11\u002Fadvanced\u002Findex",[781,782,786,790],{"title":776,"path":778,"stem":779,"icon":777},{"title":783,"path":784,"stem":785,"icon":777},"实参依赖查找","\u002Fch11\u002Fadvanced\u002Fadl","ch11\u002Fadvanced\u002Fadl",{"title":787,"path":788,"stem":789,"icon":777},"可调用","\u002Fch11\u002Fadvanced\u002Fcallable","ch11\u002Fadvanced\u002Fcallable",{"title":791,"path":792,"stem":793,"icon":777},"预置比较","\u002Fch11\u002Fadvanced\u002Fdefaulted_compare","ch11\u002Fadvanced\u002Fdefaulted_compare",{"title":795,"icon":796,"path":797,"stem":798,"children":799},"语法基础","i-lucide-book-text","\u002Fch11\u002Fgrammar","ch11\u002Fgrammar\u002Findex",[800,801,805,809,813,817],{"title":795,"path":797,"stem":798,"icon":796},{"title":802,"path":803,"stem":804,"icon":796},"闭包","\u002Fch11\u002Fgrammar\u002Fclosure","ch11\u002Fgrammar\u002Fclosure",{"title":806,"path":807,"stem":808,"icon":796},"函数也即对象","\u002Fch11\u002Fgrammar\u002Ffunction_as_object","ch11\u002Fgrammar\u002Ffunction_as_object",{"title":810,"path":811,"stem":812,"icon":796},"高阶函数","\u002Fch11\u002Fgrammar\u002Fhigher_order_function","ch11\u002Fgrammar\u002Fhigher_order_function",{"title":814,"path":815,"stem":816,"icon":796},"Lambda 表达式","\u002Fch11\u002Fgrammar\u002Flambda","ch11\u002Fgrammar\u002Flambda",{"title":818,"path":819,"stem":820,"icon":796},"Lambda 表达式捕获","\u002Fch11\u002Fgrammar\u002Flambda_capture","ch11\u002Fgrammar\u002Flambda_capture",{"title":822,"path":823,"stem":824,"icon":769},"`std::sort`","\u002Fch11\u002Fstd_sort","ch11\u002Fstd_sort",{"title":826,"icon":827,"path":828,"stem":829,"children":830},"STL 算法","i-lucide-sort-asc","\u002Fch11\u002Fstl_algorithms","ch11\u002Fstl_algorithms\u002Findex",[831,832,836,840,844,848,852,856,860],{"title":826,"path":828,"stem":829,"icon":827},{"title":833,"path":834,"stem":835,"icon":827},"迁移到 STLv1","\u002Fch11\u002Fstl_algorithms\u002Fcompare_with_legacy","ch11\u002Fstl_algorithms\u002Fcompare_with_legacy",{"title":837,"path":838,"stem":839,"icon":827},"复制","\u002Fch11\u002Fstl_algorithms\u002Fcopy","ch11\u002Fstl_algorithms\u002Fcopy",{"title":841,"path":842,"stem":843,"icon":827},"筛选","\u002Fch11\u002Fstl_algorithms\u002Ffilter","ch11\u002Fstl_algorithms\u002Ffilter",{"title":845,"path":846,"stem":847,"icon":827},"其它算法","\u002Fch11\u002Fstl_algorithms\u002Fothers","ch11\u002Fstl_algorithms\u002Fothers",{"title":849,"path":850,"stem":851,"icon":827},"初识范围","\u002Fch11\u002Fstl_algorithms\u002Frange","ch11\u002Fstl_algorithms\u002Frange",{"title":853,"path":854,"stem":855,"icon":827},"归约","\u002Fch11\u002Fstl_algorithms\u002Freduce","ch11\u002Fstl_algorithms\u002Freduce",{"title":857,"path":858,"stem":859,"icon":827},"排序","\u002Fch11\u002Fstl_algorithms\u002Fsort","ch11\u002Fstl_algorithms\u002Fsort",{"title":861,"path":862,"stem":863,"icon":827},"变换","\u002Fch11\u002Fstl_algorithms\u002Ftransform","ch11\u002Fstl_algorithms\u002Ftransform",{"title":865,"icon":866,"path":867,"stem":868,"children":869},"第十二章 模板","i-lucide-git-fork","\u002Fch12","ch12",[870,873,877,881,885],{"title":871,"path":867,"stem":872,"icon":866},"第十二章 模板进阶","ch12\u002Findex",{"title":874,"path":875,"stem":876},"C++20 概念","\u002Fch12\u002Fconcepts","ch12\u002Fconcepts",{"title":878,"path":879,"stem":880},"模板元编程","\u002Fch12\u002Fmetaprogramming","ch12\u002Fmetaprogramming",{"title":882,"path":883,"stem":884},"模板特化与偏特化","\u002Fch12\u002Fspecialization","ch12\u002Fspecialization",{"title":886,"icon":887,"path":888,"stem":889,"children":890},"静态派发","i-lucide-route","\u002Fch12\u002Fstatic_dispatch","ch12\u002Fstatic_dispatch\u002Findex",[891,892,896],{"title":886,"path":888,"stem":889},{"title":893,"path":894,"stem":895},"定制点","\u002Fch12\u002Fstatic_dispatch\u002Fcustomize_point","ch12\u002Fstatic_dispatch\u002Fcustomize_point",{"title":897,"path":898,"stem":899},"类型擦除","\u002Fch12\u002Fstatic_dispatch\u002Ftype_erasure","ch12\u002Fstatic_dispatch\u002Ftype_erasure",{"title":901,"path":902,"stem":903,"icon":6},"后记","\u002Fpostscript","postscript",{"title":905,"path":906,"stem":907,"icon":908},"技术信息","\u002Ftechnical_info","technical_info","i-lucide-info",{"id":910,"title":822,"body":911,"description":921,"extension":4986,"links":4987,"meta":4988,"navigation":4989,"path":823,"seo":4990,"stem":824,"__hash__":4991},"docs\u002Fch11\u002Fstd_sort.md",{"type":912,"value":913,"toc":4971},"minimark",[914,922,929,933,985,988,998,1001,1007,1285,1295,1307,1536,1557,1656,1683,1931,1934,2030,2046,2051,2058,2064,2073,2181,2184,2209,2220,2319,2329,2332,2341,2593,2604,2845,2861,3151,3166,3175,3477,3486,3585,3599,3603,3615,3751,3754,3773,3776,3902,3923,3931,3934,4047,4066,4133,4136,4139,4289,4300,4491,4495,4509,4670,4686,4839,4842,4863,4867,4873,4967],[915,916,918],"h1",{"id":917},"stdsort",[919,920,921],"code",{},"std::sort",[923,924,925,926,928],"p",{},"?> 本文是为了解释 ",[919,927,921],{}," 而撰写的。之后，本文将拆分到本书第十一章的其它部分。",[930,931,932],"h2",{"id":932},"前置知识",[934,935,936,947,957,963,973],"ul",{},[937,938,939,940,943,944,946],"li",{},"必须熟练使用",[941,942,279],"a",{"href":281},"、",[941,945,240],{"href":245},"。",[937,948,949,950,953,954,946],{},"必须熟悉",[941,951,952],{"href":374},"第四章的指针","，及其",[941,955,956],{"href":378},"和数组的关系",[937,958,959,960,962],{},"建议了解",[941,961,447],{"href":448},"的基本使用。",[937,964,965,966,968,969,972],{},"如果你想要在 STL 容器中使用 ",[919,967,921],{},"，建议了解",[941,970,971],{"href":624},"迭代器","。如果你不知道什么是 STL 容器，则不用管。",[937,974,975,976,943,980,982,983,946],{},"如果你想要更彻底地搞懂，你需要知道",[941,977,979],{"href":978},"\u002Fch04\u002Fpointer\u002Fpointer_def_2#%E6%8C%87%E5%90%91%E5%87%BD%E6%95%B0%E7%9A%84%E6%8C%87%E9%92%88%EF%BC%88%E9%80%89%E8%AF%BB%EF%BC%89","指向函数的指针",[941,981,443],{"href":444},"以及",[941,984,600],{"href":601},[930,986,826],{"id":987},"stl-算法",[923,989,990,991,994,995,997],{},"正如在",[941,992,993],{"href":610},"第八章","所提到的，标准库的一部分——STL 中，除了容器、迭代器，还包含了大量算法。STL 算法提供了一些常用的操作，而其中最常用的就是 ",[919,996,921],{},"：对一个区间排序。",[930,999,1000],{"id":1000},"从冒泡说起",[923,1002,1003,1004,1006],{},"为了引入 ",[919,1005,921],{},"，我先展示最基本的排序算法：冒泡排序。",[1008,1009,1014],"pre",{"className":1010,"code":1011,"language":1012,"meta":1013,"style":1013},"language-cpp shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","int a[100]{};\nint n;\n\u002F\u002F [...] 向 a[0] ~ a[n - 1] 写入元素 \nfor (int i{0}; i \u003C n - 1; i++) {\n    for (int j{0}; j \u003C n - 1 - i; j++) {\n        if (a[j + 1] \u003C a[j]) {\n            int temp{a[j]};\n            a[j] = a[j + 1];\n            a[j + 1] = temp;\n        }\n    }\n}\n\u002F\u002F 现在 a[0] ~ a[n - 1] 是从小到大排序的了\n","cpp","",[919,1015,1016,1040,1051,1058,1108,1153,1191,1212,1240,1261,1267,1273,1279],{"__ignoreMap":1013},[1017,1018,1021,1025,1029,1033,1037],"span",{"class":1019,"line":1020},"line",1,[1017,1022,1024],{"class":1023},"spNyl","int",[1017,1026,1028],{"class":1027},"sTEyZ"," a",[1017,1030,1032],{"class":1031},"sMK4o","[",[1017,1034,1036],{"class":1035},"sbssI","100",[1017,1038,1039],{"class":1031},"]{};\n",[1017,1041,1043,1045,1048],{"class":1019,"line":1042},2,[1017,1044,1024],{"class":1023},[1017,1046,1047],{"class":1027}," n",[1017,1049,1050],{"class":1031},";\n",[1017,1052,1054],{"class":1019,"line":1053},3,[1017,1055,1057],{"class":1056},"sHwdD","\u002F\u002F [...] 向 a[0] ~ a[n - 1] 写入元素 \n",[1017,1059,1061,1065,1068,1070,1073,1076,1079,1082,1085,1088,1091,1094,1097,1099,1102,1105],{"class":1019,"line":1060},4,[1017,1062,1064],{"class":1063},"s7zQu","for",[1017,1066,1067],{"class":1031}," (",[1017,1069,1024],{"class":1023},[1017,1071,1072],{"class":1027}," i{",[1017,1074,1075],{"class":1035},"0",[1017,1077,1078],{"class":1027},"}",[1017,1080,1081],{"class":1031},";",[1017,1083,1084],{"class":1027}," i ",[1017,1086,1087],{"class":1031},"\u003C",[1017,1089,1090],{"class":1027}," n ",[1017,1092,1093],{"class":1031},"-",[1017,1095,1096],{"class":1035}," 1",[1017,1098,1081],{"class":1031},[1017,1100,1101],{"class":1027}," i",[1017,1103,1104],{"class":1031},"++)",[1017,1106,1107],{"class":1031}," {\n",[1017,1109,1111,1114,1116,1118,1122,1124,1126,1128,1131,1133,1135,1137,1139,1142,1144,1146,1149,1151],{"class":1019,"line":1110},5,[1017,1112,1113],{"class":1063},"    for",[1017,1115,1067],{"class":1031},[1017,1117,1024],{"class":1023},[1017,1119,1121],{"class":1120},"swJcz"," j{",[1017,1123,1075],{"class":1035},[1017,1125,1078],{"class":1120},[1017,1127,1081],{"class":1031},[1017,1129,1130],{"class":1120}," j ",[1017,1132,1087],{"class":1031},[1017,1134,1090],{"class":1120},[1017,1136,1093],{"class":1031},[1017,1138,1096],{"class":1035},[1017,1140,1141],{"class":1031}," -",[1017,1143,1101],{"class":1120},[1017,1145,1081],{"class":1031},[1017,1147,1148],{"class":1120}," j",[1017,1150,1104],{"class":1031},[1017,1152,1107],{"class":1031},[1017,1154,1156,1159,1161,1163,1165,1168,1171,1173,1176,1179,1181,1183,1186,1189],{"class":1019,"line":1155},6,[1017,1157,1158],{"class":1063},"        if",[1017,1160,1067],{"class":1031},[1017,1162,941],{"class":1027},[1017,1164,1032],{"class":1031},[1017,1166,1167],{"class":1120},"j ",[1017,1169,1170],{"class":1031},"+",[1017,1172,1096],{"class":1035},[1017,1174,1175],{"class":1031},"]",[1017,1177,1178],{"class":1031}," \u003C",[1017,1180,1028],{"class":1027},[1017,1182,1032],{"class":1031},[1017,1184,1185],{"class":1120},"j",[1017,1187,1188],{"class":1031},"])",[1017,1190,1107],{"class":1031},[1017,1192,1194,1197,1200,1203,1205,1207,1209],{"class":1019,"line":1193},7,[1017,1195,1196],{"class":1023},"            int",[1017,1198,1199],{"class":1120}," temp",[1017,1201,1202],{"class":1031},"{",[1017,1204,941],{"class":1027},[1017,1206,1032],{"class":1031},[1017,1208,1185],{"class":1120},[1017,1210,1211],{"class":1031},"]};\n",[1017,1213,1215,1218,1220,1222,1224,1227,1229,1231,1233,1235,1237],{"class":1019,"line":1214},8,[1017,1216,1217],{"class":1027},"            a",[1017,1219,1032],{"class":1031},[1017,1221,1185],{"class":1120},[1017,1223,1175],{"class":1031},[1017,1225,1226],{"class":1031}," =",[1017,1228,1028],{"class":1027},[1017,1230,1032],{"class":1031},[1017,1232,1167],{"class":1120},[1017,1234,1170],{"class":1031},[1017,1236,1096],{"class":1035},[1017,1238,1239],{"class":1031},"];\n",[1017,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259],{"class":1019,"line":1242},9,[1017,1244,1217],{"class":1027},[1017,1246,1032],{"class":1031},[1017,1248,1167],{"class":1120},[1017,1250,1170],{"class":1031},[1017,1252,1096],{"class":1035},[1017,1254,1175],{"class":1031},[1017,1256,1226],{"class":1031},[1017,1258,1199],{"class":1120},[1017,1260,1050],{"class":1031},[1017,1262,1264],{"class":1019,"line":1263},10,[1017,1265,1266],{"class":1031},"        }\n",[1017,1268,1270],{"class":1019,"line":1269},11,[1017,1271,1272],{"class":1031},"    }\n",[1017,1274,1276],{"class":1019,"line":1275},12,[1017,1277,1278],{"class":1031},"}\n",[1017,1280,1282],{"class":1019,"line":1281},13,[1017,1283,1284],{"class":1056},"\u002F\u002F 现在 a[0] ~ a[n - 1] 是从小到大排序的了\n",[923,1286,1287,1288,1290,1291,1294],{},"如果你不清楚冒泡排序的原理，没有关系：你只需要直到这样的代码可以得到什么样的结果就够了。现在我们首先希望做的事情是将排序部分的代码包装成一个函数。那么观察得到，这个函数应当接受一个数组 ",[919,1289,941],{}," 和一个长度 ",[919,1292,1293],{},"n"," 作为参数，应当返回给调用方一个排序好的数组。",[923,1296,1297,1298,1302,1303,1306],{},"但不幸的是，",[1299,1300,1301],"strong",{},"数组不能作为函数形参","；此外函数也不能返回数组。但好在",[1299,1304,1305],{},"我们有指针","——利用指针可以同时解决这两个问题。",[1008,1308,1310],{"className":1010,"code":1309,"language":1012,"meta":1013,"style":1013},"\u002F\u002F 对 a 所指向元素及其后面共 n 个元素从小到大排序。\nvoid sort(int* a, int n) {\n    for (int i{0}; i \u003C n - 1; i++) {\n        for (int j{0}; j \u003C n - 1 - i; j++) {\n            \u002F\u002F a[j] 就是 *(a + j) 的意思。\n            if (a[j + 1] \u003C a[j]) {\n                int temp{a[j]};\n                a[j] = a[j + 1];\n                a[j + 1] = temp;\n            }\n        }\n    }\n}\n",[919,1311,1312,1317,1348,1382,1421,1426,1457,1474,1499,1519,1524,1528,1532],{"__ignoreMap":1013},[1017,1313,1314],{"class":1019,"line":1020},[1017,1315,1316],{"class":1056},"\u002F\u002F 对 a 所指向元素及其后面共 n 个元素从小到大排序。\n",[1017,1318,1319,1322,1326,1329,1332,1335,1338,1341,1343,1346],{"class":1019,"line":1042},[1017,1320,1321],{"class":1023},"void",[1017,1323,1325],{"class":1324},"s2Zo4"," sort",[1017,1327,1328],{"class":1031},"(",[1017,1330,1331],{"class":1023},"int*",[1017,1333,1028],{"class":1334},"sHdIc",[1017,1336,1337],{"class":1031},",",[1017,1339,1340],{"class":1023}," int",[1017,1342,1047],{"class":1334},[1017,1344,1345],{"class":1031},")",[1017,1347,1107],{"class":1031},[1017,1349,1350,1352,1354,1356,1358,1360,1362,1364,1366,1368,1370,1372,1374,1376,1378,1380],{"class":1019,"line":1053},[1017,1351,1113],{"class":1063},[1017,1353,1067],{"class":1031},[1017,1355,1024],{"class":1023},[1017,1357,1072],{"class":1027},[1017,1359,1075],{"class":1035},[1017,1361,1078],{"class":1027},[1017,1363,1081],{"class":1031},[1017,1365,1084],{"class":1027},[1017,1367,1087],{"class":1031},[1017,1369,1090],{"class":1027},[1017,1371,1093],{"class":1031},[1017,1373,1096],{"class":1035},[1017,1375,1081],{"class":1031},[1017,1377,1101],{"class":1027},[1017,1379,1104],{"class":1031},[1017,1381,1107],{"class":1031},[1017,1383,1384,1387,1389,1391,1393,1395,1397,1399,1401,1403,1405,1407,1409,1411,1413,1415,1417,1419],{"class":1019,"line":1060},[1017,1385,1386],{"class":1063},"        for",[1017,1388,1067],{"class":1031},[1017,1390,1024],{"class":1023},[1017,1392,1121],{"class":1120},[1017,1394,1075],{"class":1035},[1017,1396,1078],{"class":1120},[1017,1398,1081],{"class":1031},[1017,1400,1130],{"class":1120},[1017,1402,1087],{"class":1031},[1017,1404,1090],{"class":1120},[1017,1406,1093],{"class":1031},[1017,1408,1096],{"class":1035},[1017,1410,1141],{"class":1031},[1017,1412,1101],{"class":1120},[1017,1414,1081],{"class":1031},[1017,1416,1148],{"class":1120},[1017,1418,1104],{"class":1031},[1017,1420,1107],{"class":1031},[1017,1422,1423],{"class":1019,"line":1110},[1017,1424,1425],{"class":1056},"            \u002F\u002F a[j] 就是 *(a + j) 的意思。\n",[1017,1427,1428,1431,1433,1435,1437,1439,1441,1443,1445,1447,1449,1451,1453,1455],{"class":1019,"line":1155},[1017,1429,1430],{"class":1063},"            if",[1017,1432,1067],{"class":1031},[1017,1434,941],{"class":1027},[1017,1436,1032],{"class":1031},[1017,1438,1167],{"class":1120},[1017,1440,1170],{"class":1031},[1017,1442,1096],{"class":1035},[1017,1444,1175],{"class":1031},[1017,1446,1178],{"class":1031},[1017,1448,1028],{"class":1027},[1017,1450,1032],{"class":1031},[1017,1452,1185],{"class":1120},[1017,1454,1188],{"class":1031},[1017,1456,1107],{"class":1031},[1017,1458,1459,1462,1464,1466,1468,1470,1472],{"class":1019,"line":1193},[1017,1460,1461],{"class":1023},"                int",[1017,1463,1199],{"class":1120},[1017,1465,1202],{"class":1031},[1017,1467,941],{"class":1027},[1017,1469,1032],{"class":1031},[1017,1471,1185],{"class":1120},[1017,1473,1211],{"class":1031},[1017,1475,1476,1479,1481,1483,1485,1487,1489,1491,1493,1495,1497],{"class":1019,"line":1214},[1017,1477,1478],{"class":1027},"                a",[1017,1480,1032],{"class":1031},[1017,1482,1185],{"class":1120},[1017,1484,1175],{"class":1031},[1017,1486,1226],{"class":1031},[1017,1488,1028],{"class":1027},[1017,1490,1032],{"class":1031},[1017,1492,1167],{"class":1120},[1017,1494,1170],{"class":1031},[1017,1496,1096],{"class":1035},[1017,1498,1239],{"class":1031},[1017,1500,1501,1503,1505,1507,1509,1511,1513,1515,1517],{"class":1019,"line":1242},[1017,1502,1478],{"class":1027},[1017,1504,1032],{"class":1031},[1017,1506,1167],{"class":1120},[1017,1508,1170],{"class":1031},[1017,1510,1096],{"class":1035},[1017,1512,1175],{"class":1031},[1017,1514,1226],{"class":1031},[1017,1516,1199],{"class":1120},[1017,1518,1050],{"class":1031},[1017,1520,1521],{"class":1019,"line":1263},[1017,1522,1523],{"class":1031},"            }\n",[1017,1525,1526],{"class":1019,"line":1269},[1017,1527,1266],{"class":1031},[1017,1529,1530],{"class":1019,"line":1275},[1017,1531,1272],{"class":1031},[1017,1533,1534],{"class":1019,"line":1281},[1017,1535,1278],{"class":1031},[923,1537,1538,1539,1542,1543,1545,1546,1549,1550,1553,1554,1556],{},"当用这种写法时，只需传入 ",[919,1540,1541],{},"&a[0]"," 和 ",[919,1544,1293],{},"，即可对 ",[919,1547,1548],{},"a[0]"," 到 ",[919,1551,1552],{},"a[n - 1]"," 这 ",[919,1555,1293],{}," 个元素排序。而且由于我们直接修改了指针所指向的变量，从而不需要返回一个新的数组。",[1008,1558,1560],{"className":1010,"code":1559,"language":1012,"meta":1013,"style":1013},"void sort(int*, int); \u002F\u002F 定义见上，略\nint main() {\n    int a[100]{};\n    int n;\n    \u002F\u002F [...] 输入 a[0] ~ a[n - 1]\n    sort(&a[0], n);\n    \u002F\u002F 由于数组到指针的隐式转换，可更方便地写成\n    \u002F\u002F sort(a, n);\n}\n",[919,1561,1562,1582,1594,1607,1615,1620,1642,1647,1652],{"__ignoreMap":1013},[1017,1563,1564,1566,1568,1570,1572,1574,1576,1579],{"class":1019,"line":1020},[1017,1565,1321],{"class":1023},[1017,1567,1325],{"class":1324},[1017,1569,1328],{"class":1031},[1017,1571,1331],{"class":1023},[1017,1573,1337],{"class":1031},[1017,1575,1340],{"class":1023},[1017,1577,1578],{"class":1031},");",[1017,1580,1581],{"class":1056}," \u002F\u002F 定义见上，略\n",[1017,1583,1584,1586,1589,1592],{"class":1019,"line":1042},[1017,1585,1024],{"class":1023},[1017,1587,1588],{"class":1324}," main",[1017,1590,1591],{"class":1031},"()",[1017,1593,1107],{"class":1031},[1017,1595,1596,1599,1601,1603,1605],{"class":1019,"line":1053},[1017,1597,1598],{"class":1023},"    int",[1017,1600,1028],{"class":1027},[1017,1602,1032],{"class":1031},[1017,1604,1036],{"class":1035},[1017,1606,1039],{"class":1031},[1017,1608,1609,1611,1613],{"class":1019,"line":1060},[1017,1610,1598],{"class":1023},[1017,1612,1047],{"class":1027},[1017,1614,1050],{"class":1031},[1017,1616,1617],{"class":1019,"line":1110},[1017,1618,1619],{"class":1056},"    \u002F\u002F [...] 输入 a[0] ~ a[n - 1]\n",[1017,1621,1622,1625,1628,1630,1632,1634,1637,1639],{"class":1019,"line":1155},[1017,1623,1624],{"class":1324},"    sort",[1017,1626,1627],{"class":1031},"(&",[1017,1629,941],{"class":1027},[1017,1631,1032],{"class":1031},[1017,1633,1075],{"class":1035},[1017,1635,1636],{"class":1031},"],",[1017,1638,1047],{"class":1027},[1017,1640,1641],{"class":1031},");\n",[1017,1643,1644],{"class":1019,"line":1193},[1017,1645,1646],{"class":1056},"    \u002F\u002F 由于数组到指针的隐式转换，可更方便地写成\n",[1017,1648,1649],{"class":1019,"line":1214},[1017,1650,1651],{"class":1056},"    \u002F\u002F sort(a, n);\n",[1017,1653,1654],{"class":1019,"line":1242},[1017,1655,1278],{"class":1031},[923,1657,1658,1659,1661,1662,1664,1665,1667,1668,1670,1671,1674,1675,1678,1679,1682],{},"总之，为了规定这个函数的排序范围，必须传入两个参数：排序范围的起始位置 ",[919,1660,941],{}," 以及排序范围的长度 ",[919,1663,1293],{},"。STL 中 ",[919,1666,921],{}," 的设计思路和我们类似。只不过 ",[919,1669,921],{}," 用",[1299,1672,1673],{},"排序范围的起始位置","和",[1299,1676,1677],{},"排序范围的终止位置","两个参数来决定排序范围。模仿这一设计原则，改写我们自己的 ",[919,1680,1681],{},"sort"," 函数如下：",[1008,1684,1686],{"className":1010,"code":1685,"language":1012,"meta":1013,"style":1013},"\u002F\u002F 对 begin 指向的元素到 end 指向的元素这一区间排序\nvoid sort(int* begin, int* end) {\n    int n{end - begin};\n    int* a{begin};\n    for (int i{0}; i \u003C n - 1; i++) {\n        for (int j{0}; j \u003C n - 1 - i; j++) {\n            if (a[j + 1] \u003C a[j]) {\n                int temp{a[j]};\n                a[j] = a[j + 1];\n                a[j + 1] = temp;\n            }\n        }\n    }\n}\n",[919,1687,1688,1693,1718,1736,1752,1786,1824,1854,1870,1894,1914,1918,1922,1926],{"__ignoreMap":1013},[1017,1689,1690],{"class":1019,"line":1020},[1017,1691,1692],{"class":1056},"\u002F\u002F 对 begin 指向的元素到 end 指向的元素这一区间排序\n",[1017,1694,1695,1697,1699,1701,1703,1706,1708,1711,1714,1716],{"class":1019,"line":1042},[1017,1696,1321],{"class":1023},[1017,1698,1325],{"class":1324},[1017,1700,1328],{"class":1031},[1017,1702,1331],{"class":1023},[1017,1704,1705],{"class":1334}," begin",[1017,1707,1337],{"class":1031},[1017,1709,1710],{"class":1023}," int*",[1017,1712,1713],{"class":1334}," end",[1017,1715,1345],{"class":1031},[1017,1717,1107],{"class":1031},[1017,1719,1720,1722,1724,1726,1729,1731,1733],{"class":1019,"line":1053},[1017,1721,1598],{"class":1023},[1017,1723,1047],{"class":1027},[1017,1725,1202],{"class":1031},[1017,1727,1728],{"class":1120},"end ",[1017,1730,1093],{"class":1031},[1017,1732,1705],{"class":1120},[1017,1734,1735],{"class":1031},"};\n",[1017,1737,1738,1740,1743,1745,1747,1750],{"class":1019,"line":1060},[1017,1739,1598],{"class":1023},[1017,1741,1742],{"class":1031},"*",[1017,1744,1028],{"class":1027},[1017,1746,1202],{"class":1031},[1017,1748,1749],{"class":1120},"begin",[1017,1751,1735],{"class":1031},[1017,1753,1754,1756,1758,1760,1762,1764,1766,1768,1770,1772,1774,1776,1778,1780,1782,1784],{"class":1019,"line":1110},[1017,1755,1113],{"class":1063},[1017,1757,1067],{"class":1031},[1017,1759,1024],{"class":1023},[1017,1761,1072],{"class":1027},[1017,1763,1075],{"class":1035},[1017,1765,1078],{"class":1027},[1017,1767,1081],{"class":1031},[1017,1769,1084],{"class":1027},[1017,1771,1087],{"class":1031},[1017,1773,1090],{"class":1027},[1017,1775,1093],{"class":1031},[1017,1777,1096],{"class":1035},[1017,1779,1081],{"class":1031},[1017,1781,1101],{"class":1027},[1017,1783,1104],{"class":1031},[1017,1785,1107],{"class":1031},[1017,1787,1788,1790,1792,1794,1796,1798,1800,1802,1804,1806,1808,1810,1812,1814,1816,1818,1820,1822],{"class":1019,"line":1155},[1017,1789,1386],{"class":1063},[1017,1791,1067],{"class":1031},[1017,1793,1024],{"class":1023},[1017,1795,1121],{"class":1120},[1017,1797,1075],{"class":1035},[1017,1799,1078],{"class":1120},[1017,1801,1081],{"class":1031},[1017,1803,1130],{"class":1120},[1017,1805,1087],{"class":1031},[1017,1807,1090],{"class":1120},[1017,1809,1093],{"class":1031},[1017,1811,1096],{"class":1035},[1017,1813,1141],{"class":1031},[1017,1815,1101],{"class":1120},[1017,1817,1081],{"class":1031},[1017,1819,1148],{"class":1120},[1017,1821,1104],{"class":1031},[1017,1823,1107],{"class":1031},[1017,1825,1826,1828,1830,1832,1834,1836,1838,1840,1842,1844,1846,1848,1850,1852],{"class":1019,"line":1193},[1017,1827,1430],{"class":1063},[1017,1829,1067],{"class":1031},[1017,1831,941],{"class":1027},[1017,1833,1032],{"class":1031},[1017,1835,1167],{"class":1120},[1017,1837,1170],{"class":1031},[1017,1839,1096],{"class":1035},[1017,1841,1175],{"class":1031},[1017,1843,1178],{"class":1031},[1017,1845,1028],{"class":1027},[1017,1847,1032],{"class":1031},[1017,1849,1185],{"class":1120},[1017,1851,1188],{"class":1031},[1017,1853,1107],{"class":1031},[1017,1855,1856,1858,1860,1862,1864,1866,1868],{"class":1019,"line":1214},[1017,1857,1461],{"class":1023},[1017,1859,1199],{"class":1120},[1017,1861,1202],{"class":1031},[1017,1863,941],{"class":1027},[1017,1865,1032],{"class":1031},[1017,1867,1185],{"class":1120},[1017,1869,1211],{"class":1031},[1017,1871,1872,1874,1876,1878,1880,1882,1884,1886,1888,1890,1892],{"class":1019,"line":1242},[1017,1873,1478],{"class":1027},[1017,1875,1032],{"class":1031},[1017,1877,1185],{"class":1120},[1017,1879,1175],{"class":1031},[1017,1881,1226],{"class":1031},[1017,1883,1028],{"class":1027},[1017,1885,1032],{"class":1031},[1017,1887,1167],{"class":1120},[1017,1889,1170],{"class":1031},[1017,1891,1096],{"class":1035},[1017,1893,1239],{"class":1031},[1017,1895,1896,1898,1900,1902,1904,1906,1908,1910,1912],{"class":1019,"line":1263},[1017,1897,1478],{"class":1027},[1017,1899,1032],{"class":1031},[1017,1901,1167],{"class":1120},[1017,1903,1170],{"class":1031},[1017,1905,1096],{"class":1035},[1017,1907,1175],{"class":1031},[1017,1909,1226],{"class":1031},[1017,1911,1199],{"class":1120},[1017,1913,1050],{"class":1031},[1017,1915,1916],{"class":1019,"line":1269},[1017,1917,1523],{"class":1031},[1017,1919,1920],{"class":1019,"line":1275},[1017,1921,1266],{"class":1031},[1017,1923,1924],{"class":1019,"line":1281},[1017,1925,1272],{"class":1031},[1017,1927,1929],{"class":1019,"line":1928},14,[1017,1930,1278],{"class":1031},[923,1932,1933],{},"在使用时：",[1008,1935,1937],{"className":1010,"code":1936,"language":1012,"meta":1013,"style":1013},"void sort(int*, int*); \u002F\u002F 定义见上，略\nint main() {\n    int a[100]{};\n    int n;\n    \u002F\u002F [...] 输入 a[0] ~ a[n - 1]\n    sort(&a[0], &a[n]);\n    \u002F\u002F 由于数组到指针的隐式转换，可更方便地写成\n    \u002F\u002F sort(a, a + n);\n}\n",[919,1938,1939,1957,1967,1979,1987,1991,2017,2021,2026],{"__ignoreMap":1013},[1017,1940,1941,1943,1945,1947,1949,1951,1953,1955],{"class":1019,"line":1020},[1017,1942,1321],{"class":1023},[1017,1944,1325],{"class":1324},[1017,1946,1328],{"class":1031},[1017,1948,1331],{"class":1023},[1017,1950,1337],{"class":1031},[1017,1952,1710],{"class":1023},[1017,1954,1578],{"class":1031},[1017,1956,1581],{"class":1056},[1017,1958,1959,1961,1963,1965],{"class":1019,"line":1042},[1017,1960,1024],{"class":1023},[1017,1962,1588],{"class":1324},[1017,1964,1591],{"class":1031},[1017,1966,1107],{"class":1031},[1017,1968,1969,1971,1973,1975,1977],{"class":1019,"line":1053},[1017,1970,1598],{"class":1023},[1017,1972,1028],{"class":1027},[1017,1974,1032],{"class":1031},[1017,1976,1036],{"class":1035},[1017,1978,1039],{"class":1031},[1017,1980,1981,1983,1985],{"class":1019,"line":1060},[1017,1982,1598],{"class":1023},[1017,1984,1047],{"class":1027},[1017,1986,1050],{"class":1031},[1017,1988,1989],{"class":1019,"line":1110},[1017,1990,1619],{"class":1056},[1017,1992,1993,1995,1997,1999,2001,2003,2005,2008,2010,2012,2014],{"class":1019,"line":1155},[1017,1994,1624],{"class":1324},[1017,1996,1627],{"class":1031},[1017,1998,941],{"class":1027},[1017,2000,1032],{"class":1031},[1017,2002,1075],{"class":1035},[1017,2004,1636],{"class":1031},[1017,2006,2007],{"class":1031}," &",[1017,2009,941],{"class":1027},[1017,2011,1032],{"class":1031},[1017,2013,1293],{"class":1027},[1017,2015,2016],{"class":1031},"]);\n",[1017,2018,2019],{"class":1019,"line":1193},[1017,2020,1646],{"class":1056},[1017,2022,2023],{"class":1019,"line":1214},[1017,2024,2025],{"class":1056},"    \u002F\u002F sort(a, a + n);\n",[1017,2027,2028],{"class":1019,"line":1242},[1017,2029,1278],{"class":1031},[923,2031,2032,2033,2036,2037,2040,2041,1549,2043,2045],{},"特别强调，当这样改写完成后，",[919,2034,2035],{},"end"," 指向的元素其实是不被排序的（正如同最初的例子中，",[919,2038,2039],{},"a[n]"," 不会被排序：排序的范围是 ",[919,2042,1548],{},[919,2044,1552],{},"）。",[2047,2048],"img",{"src":2049,"alt":2050},"\u002Fassets\u002Frange-begin-end.svg","begin and end iterator",[923,2052,2053,2054,2057],{},"所以如果你的排序范围是从 ",[919,2055,2056],{},"a[1]"," 开始的，你应该知道如何用这种写法来达成目标。",[930,2059,2061,2063],{"id":2060},"stdsort-的基本使用",[919,2062,921],{}," 的基本使用",[923,2065,2066,2068,2069,2072],{},[919,2067,921],{}," 定义于头文件 ",[919,2070,2071],{},"\u003Calgorithm>","，是个函数模板。如果你不知道函数模板是什么的话，那么你可以理解为无限多个函数，你可以从中找到你想要的那个。比如：",[1008,2074,2076],{"className":1010,"code":2075,"language":1012,"meta":1013,"style":1013},"#include \u003Calgorithm>\nint main() {\n    int a[100]{};\n    int n;\n    \u002F\u002F [...] 输入 a[0] ~ a[n - 1]\n\n    \u002F\u002F 调用 std::sort\n    std::sort(&a[0], &a[n]);\n\n    \u002F\u002F a[0] ~ a[n - 1] 已排好序\n}\n",[919,2077,2078,2092,2102,2114,2122,2126,2132,2137,2168,2172,2177],{"__ignoreMap":1013},[1017,2079,2080,2083,2085,2089],{"class":1019,"line":1020},[1017,2081,2082],{"class":1063},"#include",[1017,2084,1178],{"class":1031},[1017,2086,2088],{"class":2087},"sfazB","algorithm",[1017,2090,2091],{"class":1031},">\n",[1017,2093,2094,2096,2098,2100],{"class":1019,"line":1042},[1017,2095,1024],{"class":1023},[1017,2097,1588],{"class":1324},[1017,2099,1591],{"class":1031},[1017,2101,1107],{"class":1031},[1017,2103,2104,2106,2108,2110,2112],{"class":1019,"line":1053},[1017,2105,1598],{"class":1023},[1017,2107,1028],{"class":1027},[1017,2109,1032],{"class":1031},[1017,2111,1036],{"class":1035},[1017,2113,1039],{"class":1031},[1017,2115,2116,2118,2120],{"class":1019,"line":1060},[1017,2117,1598],{"class":1023},[1017,2119,1047],{"class":1027},[1017,2121,1050],{"class":1031},[1017,2123,2124],{"class":1019,"line":1110},[1017,2125,1619],{"class":1056},[1017,2127,2128],{"class":1019,"line":1155},[1017,2129,2131],{"emptyLinePlaceholder":2130},true,"\n",[1017,2133,2134],{"class":1019,"line":1193},[1017,2135,2136],{"class":1056},"    \u002F\u002F 调用 std::sort\n",[1017,2138,2139,2143,2146,2148,2150,2152,2154,2156,2158,2160,2162,2164,2166],{"class":1019,"line":1214},[1017,2140,2142],{"class":2141},"sBMFI","    std",[1017,2144,2145],{"class":1031},"::",[1017,2147,1681],{"class":1324},[1017,2149,1627],{"class":1031},[1017,2151,941],{"class":1027},[1017,2153,1032],{"class":1031},[1017,2155,1075],{"class":1035},[1017,2157,1636],{"class":1031},[1017,2159,2007],{"class":1031},[1017,2161,941],{"class":1027},[1017,2163,1032],{"class":1031},[1017,2165,1293],{"class":1027},[1017,2167,2016],{"class":1031},[1017,2169,2170],{"class":1019,"line":1242},[1017,2171,2131],{"emptyLinePlaceholder":2130},[1017,2173,2174],{"class":1019,"line":1263},[1017,2175,2176],{"class":1056},"    \u002F\u002F a[0] ~ a[n - 1] 已排好序\n",[1017,2178,2179],{"class":1019,"line":1269},[1017,2180,1278],{"class":1031},[923,2182,2183],{},"那么，你就调用了形式为",[1008,2185,2187],{"className":1010,"code":2186,"language":1012,"meta":1013,"style":1013},"void sort(int* begin, int* end);\n",[919,2188,2189],{"__ignoreMap":1013},[1017,2190,2191,2193,2195,2197,2199,2201,2203,2205,2207],{"class":1019,"line":1020},[1017,2192,1321],{"class":1023},[1017,2194,1325],{"class":1324},[1017,2196,1328],{"class":1031},[1017,2198,1331],{"class":1023},[1017,2200,1705],{"class":1334},[1017,2202,1337],{"class":1031},[1017,2204,1710],{"class":1023},[1017,2206,1713],{"class":1334},[1017,2208,1641],{"class":1031},[923,2210,2211,2212,2215,2216,2219],{},"的排序函数。之所以是“无限多个”，因为它可以用来排序 ",[919,2213,2214],{},"double"," 类型、",[919,2217,2218],{},"char"," 类型等所有内置类型构成的数组。",[1008,2221,2223],{"className":1010,"code":2222,"language":1012,"meta":1013,"style":1013},"#include \u003Calgorithm>\nint main() {\n    double a[100]{};\n    int n;\n    \u002F\u002F [...] 输入 a[0] ~ a[n - 1]\n\n    \u002F\u002F 也可以在 double 数组上调用 std::sort！\n    std::sort(&a[0], &a[n]);\n\n    \u002F\u002F a[0] ~ a[n - 1] 已排好序\n}\n",[919,2224,2225,2235,2245,2258,2266,2270,2274,2279,2307,2311,2315],{"__ignoreMap":1013},[1017,2226,2227,2229,2231,2233],{"class":1019,"line":1020},[1017,2228,2082],{"class":1063},[1017,2230,1178],{"class":1031},[1017,2232,2088],{"class":2087},[1017,2234,2091],{"class":1031},[1017,2236,2237,2239,2241,2243],{"class":1019,"line":1042},[1017,2238,1024],{"class":1023},[1017,2240,1588],{"class":1324},[1017,2242,1591],{"class":1031},[1017,2244,1107],{"class":1031},[1017,2246,2247,2250,2252,2254,2256],{"class":1019,"line":1053},[1017,2248,2249],{"class":1023},"    double",[1017,2251,1028],{"class":1027},[1017,2253,1032],{"class":1031},[1017,2255,1036],{"class":1035},[1017,2257,1039],{"class":1031},[1017,2259,2260,2262,2264],{"class":1019,"line":1060},[1017,2261,1598],{"class":1023},[1017,2263,1047],{"class":1027},[1017,2265,1050],{"class":1031},[1017,2267,2268],{"class":1019,"line":1110},[1017,2269,1619],{"class":1056},[1017,2271,2272],{"class":1019,"line":1155},[1017,2273,2131],{"emptyLinePlaceholder":2130},[1017,2275,2276],{"class":1019,"line":1193},[1017,2277,2278],{"class":1056},"    \u002F\u002F 也可以在 double 数组上调用 std::sort！\n",[1017,2280,2281,2283,2285,2287,2289,2291,2293,2295,2297,2299,2301,2303,2305],{"class":1019,"line":1214},[1017,2282,2142],{"class":2141},[1017,2284,2145],{"class":1031},[1017,2286,1681],{"class":1324},[1017,2288,1627],{"class":1031},[1017,2290,941],{"class":1027},[1017,2292,1032],{"class":1031},[1017,2294,1075],{"class":1035},[1017,2296,1636],{"class":1031},[1017,2298,2007],{"class":1031},[1017,2300,941],{"class":1027},[1017,2302,1032],{"class":1031},[1017,2304,1293],{"class":1027},[1017,2306,2016],{"class":1031},[1017,2308,2309],{"class":1019,"line":1242},[1017,2310,2131],{"emptyLinePlaceholder":2130},[1017,2312,2313],{"class":1019,"line":1263},[1017,2314,2176],{"class":1056},[1017,2316,2317],{"class":1019,"line":1269},[1017,2318,1278],{"class":1031},[923,2320,2321,2322,2324,2325,2328],{},"如果你了解函数模板，你可能猜到了 ",[919,2323,921],{}," 是形如 ",[919,2326,2327],{},"template\u003Ctypename T> void sort(T*, T*);"," 的模板；尽管这并不准确，但意思对了。",[930,2330,2331],{"id":2331},"排序依据",[923,2333,2334,2335,2337,2338,2340],{},"假设 ",[919,2336,921],{}," 用的就是我们刚刚写的冒泡排序的实现。（真实情况当然不是。）当 ",[919,2339,1681],{}," 执行完成时，最终排出来的就是从小到大的有序范围。仔细观察我们的代码：",[1008,2342,2344],{"className":1010,"code":2343,"language":1012,"meta":1013,"style":1013},"void sort(int* begin, int* end) {\n    int n{end - begin};\n    int* a{begin};\n    for (int i{0}; i \u003C n - 1; i++) {\n        for (int j{0}; j \u003C n - 1 - i; j++) {\n            \u002F\u002F 注意下面一行的小于号。\n            \u002F\u002F 只有这一行表达式计算元素之间的大小关系，\n            \u002F\u002F 然后依靠这个关系来交换元素的顺序。\n            if (a[j + 1] \u003C a[j]) {\n                int temp{a[j]};\n                a[j] = a[j + 1];\n                a[j + 1] = temp;\n            }\n        }\n    }\n}\n",[919,2345,2346,2368,2384,2398,2432,2470,2475,2480,2485,2515,2531,2555,2575,2579,2583,2588],{"__ignoreMap":1013},[1017,2347,2348,2350,2352,2354,2356,2358,2360,2362,2364,2366],{"class":1019,"line":1020},[1017,2349,1321],{"class":1023},[1017,2351,1325],{"class":1324},[1017,2353,1328],{"class":1031},[1017,2355,1331],{"class":1023},[1017,2357,1705],{"class":1334},[1017,2359,1337],{"class":1031},[1017,2361,1710],{"class":1023},[1017,2363,1713],{"class":1334},[1017,2365,1345],{"class":1031},[1017,2367,1107],{"class":1031},[1017,2369,2370,2372,2374,2376,2378,2380,2382],{"class":1019,"line":1042},[1017,2371,1598],{"class":1023},[1017,2373,1047],{"class":1027},[1017,2375,1202],{"class":1031},[1017,2377,1728],{"class":1120},[1017,2379,1093],{"class":1031},[1017,2381,1705],{"class":1120},[1017,2383,1735],{"class":1031},[1017,2385,2386,2388,2390,2392,2394,2396],{"class":1019,"line":1053},[1017,2387,1598],{"class":1023},[1017,2389,1742],{"class":1031},[1017,2391,1028],{"class":1027},[1017,2393,1202],{"class":1031},[1017,2395,1749],{"class":1120},[1017,2397,1735],{"class":1031},[1017,2399,2400,2402,2404,2406,2408,2410,2412,2414,2416,2418,2420,2422,2424,2426,2428,2430],{"class":1019,"line":1060},[1017,2401,1113],{"class":1063},[1017,2403,1067],{"class":1031},[1017,2405,1024],{"class":1023},[1017,2407,1072],{"class":1027},[1017,2409,1075],{"class":1035},[1017,2411,1078],{"class":1027},[1017,2413,1081],{"class":1031},[1017,2415,1084],{"class":1027},[1017,2417,1087],{"class":1031},[1017,2419,1090],{"class":1027},[1017,2421,1093],{"class":1031},[1017,2423,1096],{"class":1035},[1017,2425,1081],{"class":1031},[1017,2427,1101],{"class":1027},[1017,2429,1104],{"class":1031},[1017,2431,1107],{"class":1031},[1017,2433,2434,2436,2438,2440,2442,2444,2446,2448,2450,2452,2454,2456,2458,2460,2462,2464,2466,2468],{"class":1019,"line":1110},[1017,2435,1386],{"class":1063},[1017,2437,1067],{"class":1031},[1017,2439,1024],{"class":1023},[1017,2441,1121],{"class":1120},[1017,2443,1075],{"class":1035},[1017,2445,1078],{"class":1120},[1017,2447,1081],{"class":1031},[1017,2449,1130],{"class":1120},[1017,2451,1087],{"class":1031},[1017,2453,1090],{"class":1120},[1017,2455,1093],{"class":1031},[1017,2457,1096],{"class":1035},[1017,2459,1141],{"class":1031},[1017,2461,1101],{"class":1120},[1017,2463,1081],{"class":1031},[1017,2465,1148],{"class":1120},[1017,2467,1104],{"class":1031},[1017,2469,1107],{"class":1031},[1017,2471,2472],{"class":1019,"line":1155},[1017,2473,2474],{"class":1056},"            \u002F\u002F 注意下面一行的小于号。\n",[1017,2476,2477],{"class":1019,"line":1193},[1017,2478,2479],{"class":1056},"            \u002F\u002F 只有这一行表达式计算元素之间的大小关系，\n",[1017,2481,2482],{"class":1019,"line":1214},[1017,2483,2484],{"class":1056},"            \u002F\u002F 然后依靠这个关系来交换元素的顺序。\n",[1017,2486,2487,2489,2491,2493,2495,2497,2499,2501,2503,2505,2507,2509,2511,2513],{"class":1019,"line":1242},[1017,2488,1430],{"class":1063},[1017,2490,1067],{"class":1031},[1017,2492,941],{"class":1027},[1017,2494,1032],{"class":1031},[1017,2496,1167],{"class":1120},[1017,2498,1170],{"class":1031},[1017,2500,1096],{"class":1035},[1017,2502,1175],{"class":1031},[1017,2504,1178],{"class":1031},[1017,2506,1028],{"class":1027},[1017,2508,1032],{"class":1031},[1017,2510,1185],{"class":1120},[1017,2512,1188],{"class":1031},[1017,2514,1107],{"class":1031},[1017,2516,2517,2519,2521,2523,2525,2527,2529],{"class":1019,"line":1263},[1017,2518,1461],{"class":1023},[1017,2520,1199],{"class":1120},[1017,2522,1202],{"class":1031},[1017,2524,941],{"class":1027},[1017,2526,1032],{"class":1031},[1017,2528,1185],{"class":1120},[1017,2530,1211],{"class":1031},[1017,2532,2533,2535,2537,2539,2541,2543,2545,2547,2549,2551,2553],{"class":1019,"line":1269},[1017,2534,1478],{"class":1027},[1017,2536,1032],{"class":1031},[1017,2538,1185],{"class":1120},[1017,2540,1175],{"class":1031},[1017,2542,1226],{"class":1031},[1017,2544,1028],{"class":1027},[1017,2546,1032],{"class":1031},[1017,2548,1167],{"class":1120},[1017,2550,1170],{"class":1031},[1017,2552,1096],{"class":1035},[1017,2554,1239],{"class":1031},[1017,2556,2557,2559,2561,2563,2565,2567,2569,2571,2573],{"class":1019,"line":1275},[1017,2558,1478],{"class":1027},[1017,2560,1032],{"class":1031},[1017,2562,1167],{"class":1120},[1017,2564,1170],{"class":1031},[1017,2566,1096],{"class":1035},[1017,2568,1175],{"class":1031},[1017,2570,1226],{"class":1031},[1017,2572,1199],{"class":1120},[1017,2574,1050],{"class":1031},[1017,2576,2577],{"class":1019,"line":1281},[1017,2578,1523],{"class":1031},[1017,2580,2581],{"class":1019,"line":1928},[1017,2582,1266],{"class":1031},[1017,2584,2586],{"class":1019,"line":2585},15,[1017,2587,1272],{"class":1031},[1017,2589,2591],{"class":1019,"line":2590},16,[1017,2592,1278],{"class":1031},[923,2594,2595,2596,2599,2600,2603],{},"只有 ",[919,2597,2598],{},"a[j + 1] \u003C a[j]"," 这一行表达式是用来断定元素大小的。也就是说，如果你把这一行改成 ",[919,2601,2602],{},"a[j + 1] > a[j]","，那么最终排序出来的范围应当就是从大到小的。",[1008,2605,2607],{"className":1010,"code":2606,"language":1012,"meta":1013,"style":1013},"\u002F\u002F 冒泡的 sort，但从大到小\nvoid sort(int* begin, int* end) {\n    int n{end - begin};\n    int* a{begin};\n    for (int i{0}; i \u003C n - 1; i++) {\n        for (int j{0}; j \u003C n - 1 - i; j++) {\n            if (a[j + 1] > a[j]) {\n                int temp{a[j]};\n                a[j] = a[j + 1];\n                a[j + 1] = temp;\n            }\n        }\n    }\n}\n",[919,2608,2609,2614,2636,2652,2666,2700,2738,2769,2785,2809,2829,2833,2837,2841],{"__ignoreMap":1013},[1017,2610,2611],{"class":1019,"line":1020},[1017,2612,2613],{"class":1056},"\u002F\u002F 冒泡的 sort，但从大到小\n",[1017,2615,2616,2618,2620,2622,2624,2626,2628,2630,2632,2634],{"class":1019,"line":1042},[1017,2617,1321],{"class":1023},[1017,2619,1325],{"class":1324},[1017,2621,1328],{"class":1031},[1017,2623,1331],{"class":1023},[1017,2625,1705],{"class":1334},[1017,2627,1337],{"class":1031},[1017,2629,1710],{"class":1023},[1017,2631,1713],{"class":1334},[1017,2633,1345],{"class":1031},[1017,2635,1107],{"class":1031},[1017,2637,2638,2640,2642,2644,2646,2648,2650],{"class":1019,"line":1053},[1017,2639,1598],{"class":1023},[1017,2641,1047],{"class":1027},[1017,2643,1202],{"class":1031},[1017,2645,1728],{"class":1120},[1017,2647,1093],{"class":1031},[1017,2649,1705],{"class":1120},[1017,2651,1735],{"class":1031},[1017,2653,2654,2656,2658,2660,2662,2664],{"class":1019,"line":1060},[1017,2655,1598],{"class":1023},[1017,2657,1742],{"class":1031},[1017,2659,1028],{"class":1027},[1017,2661,1202],{"class":1031},[1017,2663,1749],{"class":1120},[1017,2665,1735],{"class":1031},[1017,2667,2668,2670,2672,2674,2676,2678,2680,2682,2684,2686,2688,2690,2692,2694,2696,2698],{"class":1019,"line":1110},[1017,2669,1113],{"class":1063},[1017,2671,1067],{"class":1031},[1017,2673,1024],{"class":1023},[1017,2675,1072],{"class":1027},[1017,2677,1075],{"class":1035},[1017,2679,1078],{"class":1027},[1017,2681,1081],{"class":1031},[1017,2683,1084],{"class":1027},[1017,2685,1087],{"class":1031},[1017,2687,1090],{"class":1027},[1017,2689,1093],{"class":1031},[1017,2691,1096],{"class":1035},[1017,2693,1081],{"class":1031},[1017,2695,1101],{"class":1027},[1017,2697,1104],{"class":1031},[1017,2699,1107],{"class":1031},[1017,2701,2702,2704,2706,2708,2710,2712,2714,2716,2718,2720,2722,2724,2726,2728,2730,2732,2734,2736],{"class":1019,"line":1155},[1017,2703,1386],{"class":1063},[1017,2705,1067],{"class":1031},[1017,2707,1024],{"class":1023},[1017,2709,1121],{"class":1120},[1017,2711,1075],{"class":1035},[1017,2713,1078],{"class":1120},[1017,2715,1081],{"class":1031},[1017,2717,1130],{"class":1120},[1017,2719,1087],{"class":1031},[1017,2721,1090],{"class":1120},[1017,2723,1093],{"class":1031},[1017,2725,1096],{"class":1035},[1017,2727,1141],{"class":1031},[1017,2729,1101],{"class":1120},[1017,2731,1081],{"class":1031},[1017,2733,1148],{"class":1120},[1017,2735,1104],{"class":1031},[1017,2737,1107],{"class":1031},[1017,2739,2740,2742,2744,2746,2748,2750,2752,2754,2756,2759,2761,2763,2765,2767],{"class":1019,"line":1193},[1017,2741,1430],{"class":1063},[1017,2743,1067],{"class":1031},[1017,2745,941],{"class":1027},[1017,2747,1032],{"class":1031},[1017,2749,1167],{"class":1120},[1017,2751,1170],{"class":1031},[1017,2753,1096],{"class":1035},[1017,2755,1175],{"class":1031},[1017,2757,2758],{"class":1031}," >",[1017,2760,1028],{"class":1027},[1017,2762,1032],{"class":1031},[1017,2764,1185],{"class":1120},[1017,2766,1188],{"class":1031},[1017,2768,1107],{"class":1031},[1017,2770,2771,2773,2775,2777,2779,2781,2783],{"class":1019,"line":1214},[1017,2772,1461],{"class":1023},[1017,2774,1199],{"class":1120},[1017,2776,1202],{"class":1031},[1017,2778,941],{"class":1027},[1017,2780,1032],{"class":1031},[1017,2782,1185],{"class":1120},[1017,2784,1211],{"class":1031},[1017,2786,2787,2789,2791,2793,2795,2797,2799,2801,2803,2805,2807],{"class":1019,"line":1242},[1017,2788,1478],{"class":1027},[1017,2790,1032],{"class":1031},[1017,2792,1185],{"class":1120},[1017,2794,1175],{"class":1031},[1017,2796,1226],{"class":1031},[1017,2798,1028],{"class":1027},[1017,2800,1032],{"class":1031},[1017,2802,1167],{"class":1120},[1017,2804,1170],{"class":1031},[1017,2806,1096],{"class":1035},[1017,2808,1239],{"class":1031},[1017,2810,2811,2813,2815,2817,2819,2821,2823,2825,2827],{"class":1019,"line":1263},[1017,2812,1478],{"class":1027},[1017,2814,1032],{"class":1031},[1017,2816,1167],{"class":1120},[1017,2818,1170],{"class":1031},[1017,2820,1096],{"class":1035},[1017,2822,1175],{"class":1031},[1017,2824,1226],{"class":1031},[1017,2826,1199],{"class":1120},[1017,2828,1050],{"class":1031},[1017,2830,2831],{"class":1019,"line":1269},[1017,2832,1523],{"class":1031},[1017,2834,2835],{"class":1019,"line":1275},[1017,2836,1266],{"class":1031},[1017,2838,2839],{"class":1019,"line":1281},[1017,2840,1272],{"class":1031},[1017,2842,2843],{"class":1019,"line":1928},[1017,2844,1278],{"class":1031},[923,2846,2847,2848,2850,2851,2854,2855,2857,2858,2860],{},"标准库的 ",[919,2849,921],{}," 当然希望能够照顾所有的需求：既可以从小到大排，又可以从大到小排。注意到我们的实现中，从小到大和从大到小只取决于 ",[919,2852,2853],{},"if"," 的条件。为了实现更通用的 ",[919,2856,1681],{},"，我可以把这个条件抽取成为一个独立的函数……然后在 ",[919,2859,1681],{}," 里调用它。",[1008,2862,2864],{"className":1010,"code":2863,"language":1012,"meta":1013,"style":1013},"bool cmp(int a, int b) {\n    return a \u003C b;  \u002F\u002F 或 return a > b; 若从大到小排\n}\n\nvoid sort(int* begin, int* end) {\n    int n{end - begin};\n    int* a{begin};\n    for (int i{0}; i \u003C n - 1; i++) {\n        for (int j{0}; j \u003C n - 1 - i; j++) {\n            if (cmp(a[j + 1], a[j])) {\n                int temp{a[j]};\n                a[j] = a[j + 1];\n                a[j + 1] = temp;\n            }\n        }\n    }\n}\n",[919,2865,2866,2891,2908,2912,2916,2938,2954,2968,3002,3040,3074,3090,3114,3134,3138,3142,3146],{"__ignoreMap":1013},[1017,2867,2868,2871,2874,2876,2878,2880,2882,2884,2887,2889],{"class":1019,"line":1020},[1017,2869,2870],{"class":1023},"bool",[1017,2872,2873],{"class":1324}," cmp",[1017,2875,1328],{"class":1031},[1017,2877,1024],{"class":1023},[1017,2879,1028],{"class":1334},[1017,2881,1337],{"class":1031},[1017,2883,1340],{"class":1023},[1017,2885,2886],{"class":1334}," b",[1017,2888,1345],{"class":1031},[1017,2890,1107],{"class":1031},[1017,2892,2893,2896,2899,2901,2903,2905],{"class":1019,"line":1042},[1017,2894,2895],{"class":1063},"    return",[1017,2897,2898],{"class":1027}," a ",[1017,2900,1087],{"class":1031},[1017,2902,2886],{"class":1027},[1017,2904,1081],{"class":1031},[1017,2906,2907],{"class":1056},"  \u002F\u002F 或 return a > b; 若从大到小排\n",[1017,2909,2910],{"class":1019,"line":1053},[1017,2911,1278],{"class":1031},[1017,2913,2914],{"class":1019,"line":1060},[1017,2915,2131],{"emptyLinePlaceholder":2130},[1017,2917,2918,2920,2922,2924,2926,2928,2930,2932,2934,2936],{"class":1019,"line":1110},[1017,2919,1321],{"class":1023},[1017,2921,1325],{"class":1324},[1017,2923,1328],{"class":1031},[1017,2925,1331],{"class":1023},[1017,2927,1705],{"class":1334},[1017,2929,1337],{"class":1031},[1017,2931,1710],{"class":1023},[1017,2933,1713],{"class":1334},[1017,2935,1345],{"class":1031},[1017,2937,1107],{"class":1031},[1017,2939,2940,2942,2944,2946,2948,2950,2952],{"class":1019,"line":1155},[1017,2941,1598],{"class":1023},[1017,2943,1047],{"class":1027},[1017,2945,1202],{"class":1031},[1017,2947,1728],{"class":1120},[1017,2949,1093],{"class":1031},[1017,2951,1705],{"class":1120},[1017,2953,1735],{"class":1031},[1017,2955,2956,2958,2960,2962,2964,2966],{"class":1019,"line":1193},[1017,2957,1598],{"class":1023},[1017,2959,1742],{"class":1031},[1017,2961,1028],{"class":1027},[1017,2963,1202],{"class":1031},[1017,2965,1749],{"class":1120},[1017,2967,1735],{"class":1031},[1017,2969,2970,2972,2974,2976,2978,2980,2982,2984,2986,2988,2990,2992,2994,2996,2998,3000],{"class":1019,"line":1214},[1017,2971,1113],{"class":1063},[1017,2973,1067],{"class":1031},[1017,2975,1024],{"class":1023},[1017,2977,1072],{"class":1027},[1017,2979,1075],{"class":1035},[1017,2981,1078],{"class":1027},[1017,2983,1081],{"class":1031},[1017,2985,1084],{"class":1027},[1017,2987,1087],{"class":1031},[1017,2989,1090],{"class":1027},[1017,2991,1093],{"class":1031},[1017,2993,1096],{"class":1035},[1017,2995,1081],{"class":1031},[1017,2997,1101],{"class":1027},[1017,2999,1104],{"class":1031},[1017,3001,1107],{"class":1031},[1017,3003,3004,3006,3008,3010,3012,3014,3016,3018,3020,3022,3024,3026,3028,3030,3032,3034,3036,3038],{"class":1019,"line":1242},[1017,3005,1386],{"class":1063},[1017,3007,1067],{"class":1031},[1017,3009,1024],{"class":1023},[1017,3011,1121],{"class":1120},[1017,3013,1075],{"class":1035},[1017,3015,1078],{"class":1120},[1017,3017,1081],{"class":1031},[1017,3019,1130],{"class":1120},[1017,3021,1087],{"class":1031},[1017,3023,1090],{"class":1120},[1017,3025,1093],{"class":1031},[1017,3027,1096],{"class":1035},[1017,3029,1141],{"class":1031},[1017,3031,1101],{"class":1120},[1017,3033,1081],{"class":1031},[1017,3035,1148],{"class":1120},[1017,3037,1104],{"class":1031},[1017,3039,1107],{"class":1031},[1017,3041,3042,3044,3046,3049,3051,3053,3055,3057,3059,3061,3063,3065,3067,3069,3072],{"class":1019,"line":1263},[1017,3043,1430],{"class":1063},[1017,3045,1067],{"class":1031},[1017,3047,3048],{"class":1324},"cmp",[1017,3050,1328],{"class":1031},[1017,3052,941],{"class":1027},[1017,3054,1032],{"class":1031},[1017,3056,1167],{"class":1120},[1017,3058,1170],{"class":1031},[1017,3060,1096],{"class":1035},[1017,3062,1636],{"class":1031},[1017,3064,1028],{"class":1027},[1017,3066,1032],{"class":1031},[1017,3068,1185],{"class":1120},[1017,3070,3071],{"class":1031},"]))",[1017,3073,1107],{"class":1031},[1017,3075,3076,3078,3080,3082,3084,3086,3088],{"class":1019,"line":1269},[1017,3077,1461],{"class":1023},[1017,3079,1199],{"class":1120},[1017,3081,1202],{"class":1031},[1017,3083,941],{"class":1027},[1017,3085,1032],{"class":1031},[1017,3087,1185],{"class":1120},[1017,3089,1211],{"class":1031},[1017,3091,3092,3094,3096,3098,3100,3102,3104,3106,3108,3110,3112],{"class":1019,"line":1275},[1017,3093,1478],{"class":1027},[1017,3095,1032],{"class":1031},[1017,3097,1185],{"class":1120},[1017,3099,1175],{"class":1031},[1017,3101,1226],{"class":1031},[1017,3103,1028],{"class":1027},[1017,3105,1032],{"class":1031},[1017,3107,1167],{"class":1120},[1017,3109,1170],{"class":1031},[1017,3111,1096],{"class":1035},[1017,3113,1239],{"class":1031},[1017,3115,3116,3118,3120,3122,3124,3126,3128,3130,3132],{"class":1019,"line":1281},[1017,3117,1478],{"class":1027},[1017,3119,1032],{"class":1031},[1017,3121,1167],{"class":1120},[1017,3123,1170],{"class":1031},[1017,3125,1096],{"class":1035},[1017,3127,1175],{"class":1031},[1017,3129,1226],{"class":1031},[1017,3131,1199],{"class":1120},[1017,3133,1050],{"class":1031},[1017,3135,3136],{"class":1019,"line":1928},[1017,3137,1523],{"class":1031},[1017,3139,3140],{"class":1019,"line":2585},[1017,3141,1266],{"class":1031},[1017,3143,3144],{"class":1019,"line":2590},[1017,3145,1272],{"class":1031},[1017,3147,3149],{"class":1019,"line":3148},17,[1017,3150,1278],{"class":1031},[923,3152,3153,3154,3156,3157,3159,3160,3162,3163,3165],{},"想一想这样做的好处是什么？这意味着如果我们想更改 ",[919,3155,1681],{}," 的排序方式，我们不再需要更改 ",[919,3158,1681],{}," 的实现，而只需要更改 ",[919,3161,3048],{}," 函数的实现就可以了。这样，",[919,3164,1681],{}," 就变成了一个“通用”的排序方案。",[923,3167,3168,3169,3171,3172,3174],{},"更进一步，可以将这个比较函数 ",[919,3170,3048],{}," 作为 ",[919,3173,1681],{}," 第三参数。这样，我们在比较的时候可以传入一个函数作为参数来决定排序结果是从小到大还是从大到小。",[1008,3176,3178],{"className":1010,"code":3177,"language":1012,"meta":1013,"style":1013},"void sort(int* begin, int* end, \u002F* ??? *\u002F cmp) {\n    int n{end - begin};\n    for (int i{0}; i \u003C n - 1; i++) {\n        for (int j{0}; j \u003C n - 1 - i; j++) {\n            if (cmp(a, b)) {\n                int temp{a[j]};\n                a[j] = a[j + 1];\n                a[j + 1] = temp;\n            }\n        }\n    }\n}\nint main() {\n    int a[100]{};\n    int n;\n    \u002F\u002F [...] 输入 a[0] ~ a[n - 1]\n\n    sort(&a[0], &a[n], \u002F* 一个返回 a \u003C b 的函数 *\u002F);\n\n    \u002F\u002F a[0] ~ a[n - 1] 已排好序\n}\n",[919,3179,3180,3209,3225,3259,3297,3318,3334,3358,3378,3382,3386,3390,3394,3404,3416,3424,3428,3432,3462,3467,3472],{"__ignoreMap":1013},[1017,3181,3182,3184,3186,3188,3190,3192,3194,3196,3198,3200,3203,3205,3207],{"class":1019,"line":1020},[1017,3183,1321],{"class":1023},[1017,3185,1325],{"class":1324},[1017,3187,1328],{"class":1031},[1017,3189,1331],{"class":1023},[1017,3191,1705],{"class":1334},[1017,3193,1337],{"class":1031},[1017,3195,1710],{"class":1023},[1017,3197,1713],{"class":1334},[1017,3199,1337],{"class":1031},[1017,3201,3202],{"class":1056}," \u002F* ??? *\u002F",[1017,3204,2873],{"class":2141},[1017,3206,1345],{"class":1031},[1017,3208,1107],{"class":1031},[1017,3210,3211,3213,3215,3217,3219,3221,3223],{"class":1019,"line":1042},[1017,3212,1598],{"class":1023},[1017,3214,1047],{"class":1027},[1017,3216,1202],{"class":1031},[1017,3218,1728],{"class":1120},[1017,3220,1093],{"class":1031},[1017,3222,1705],{"class":1120},[1017,3224,1735],{"class":1031},[1017,3226,3227,3229,3231,3233,3235,3237,3239,3241,3243,3245,3247,3249,3251,3253,3255,3257],{"class":1019,"line":1053},[1017,3228,1113],{"class":1063},[1017,3230,1067],{"class":1031},[1017,3232,1024],{"class":1023},[1017,3234,1072],{"class":1027},[1017,3236,1075],{"class":1035},[1017,3238,1078],{"class":1027},[1017,3240,1081],{"class":1031},[1017,3242,1084],{"class":1027},[1017,3244,1087],{"class":1031},[1017,3246,1090],{"class":1027},[1017,3248,1093],{"class":1031},[1017,3250,1096],{"class":1035},[1017,3252,1081],{"class":1031},[1017,3254,1101],{"class":1027},[1017,3256,1104],{"class":1031},[1017,3258,1107],{"class":1031},[1017,3260,3261,3263,3265,3267,3269,3271,3273,3275,3277,3279,3281,3283,3285,3287,3289,3291,3293,3295],{"class":1019,"line":1060},[1017,3262,1386],{"class":1063},[1017,3264,1067],{"class":1031},[1017,3266,1024],{"class":1023},[1017,3268,1121],{"class":1120},[1017,3270,1075],{"class":1035},[1017,3272,1078],{"class":1120},[1017,3274,1081],{"class":1031},[1017,3276,1130],{"class":1120},[1017,3278,1087],{"class":1031},[1017,3280,1090],{"class":1120},[1017,3282,1093],{"class":1031},[1017,3284,1096],{"class":1035},[1017,3286,1141],{"class":1031},[1017,3288,1101],{"class":1120},[1017,3290,1081],{"class":1031},[1017,3292,1148],{"class":1120},[1017,3294,1104],{"class":1031},[1017,3296,1107],{"class":1031},[1017,3298,3299,3301,3303,3305,3307,3309,3311,3313,3316],{"class":1019,"line":1110},[1017,3300,1430],{"class":1063},[1017,3302,1067],{"class":1031},[1017,3304,3048],{"class":1324},[1017,3306,1328],{"class":1031},[1017,3308,941],{"class":1120},[1017,3310,1337],{"class":1031},[1017,3312,2886],{"class":1120},[1017,3314,3315],{"class":1031},"))",[1017,3317,1107],{"class":1031},[1017,3319,3320,3322,3324,3326,3328,3330,3332],{"class":1019,"line":1155},[1017,3321,1461],{"class":1023},[1017,3323,1199],{"class":1120},[1017,3325,1202],{"class":1031},[1017,3327,941],{"class":1027},[1017,3329,1032],{"class":1031},[1017,3331,1185],{"class":1120},[1017,3333,1211],{"class":1031},[1017,3335,3336,3338,3340,3342,3344,3346,3348,3350,3352,3354,3356],{"class":1019,"line":1193},[1017,3337,1478],{"class":1027},[1017,3339,1032],{"class":1031},[1017,3341,1185],{"class":1120},[1017,3343,1175],{"class":1031},[1017,3345,1226],{"class":1031},[1017,3347,1028],{"class":1027},[1017,3349,1032],{"class":1031},[1017,3351,1167],{"class":1120},[1017,3353,1170],{"class":1031},[1017,3355,1096],{"class":1035},[1017,3357,1239],{"class":1031},[1017,3359,3360,3362,3364,3366,3368,3370,3372,3374,3376],{"class":1019,"line":1214},[1017,3361,1478],{"class":1027},[1017,3363,1032],{"class":1031},[1017,3365,1167],{"class":1120},[1017,3367,1170],{"class":1031},[1017,3369,1096],{"class":1035},[1017,3371,1175],{"class":1031},[1017,3373,1226],{"class":1031},[1017,3375,1199],{"class":1120},[1017,3377,1050],{"class":1031},[1017,3379,3380],{"class":1019,"line":1242},[1017,3381,1523],{"class":1031},[1017,3383,3384],{"class":1019,"line":1263},[1017,3385,1266],{"class":1031},[1017,3387,3388],{"class":1019,"line":1269},[1017,3389,1272],{"class":1031},[1017,3391,3392],{"class":1019,"line":1275},[1017,3393,1278],{"class":1031},[1017,3395,3396,3398,3400,3402],{"class":1019,"line":1281},[1017,3397,1024],{"class":1023},[1017,3399,1588],{"class":1324},[1017,3401,1591],{"class":1031},[1017,3403,1107],{"class":1031},[1017,3405,3406,3408,3410,3412,3414],{"class":1019,"line":1928},[1017,3407,1598],{"class":1023},[1017,3409,1028],{"class":1027},[1017,3411,1032],{"class":1031},[1017,3413,1036],{"class":1035},[1017,3415,1039],{"class":1031},[1017,3417,3418,3420,3422],{"class":1019,"line":2585},[1017,3419,1598],{"class":1023},[1017,3421,1047],{"class":1027},[1017,3423,1050],{"class":1031},[1017,3425,3426],{"class":1019,"line":2590},[1017,3427,1619],{"class":1056},[1017,3429,3430],{"class":1019,"line":3148},[1017,3431,2131],{"emptyLinePlaceholder":2130},[1017,3433,3435,3437,3439,3441,3443,3445,3447,3449,3451,3453,3455,3457,3460],{"class":1019,"line":3434},18,[1017,3436,1624],{"class":1324},[1017,3438,1627],{"class":1031},[1017,3440,941],{"class":1027},[1017,3442,1032],{"class":1031},[1017,3444,1075],{"class":1035},[1017,3446,1636],{"class":1031},[1017,3448,2007],{"class":1031},[1017,3450,941],{"class":1027},[1017,3452,1032],{"class":1031},[1017,3454,1293],{"class":1027},[1017,3456,1636],{"class":1031},[1017,3458,3459],{"class":1056}," \u002F* 一个返回 a \u003C b 的函数 *\u002F",[1017,3461,1641],{"class":1031},[1017,3463,3465],{"class":1019,"line":3464},19,[1017,3466,2131],{"emptyLinePlaceholder":2130},[1017,3468,3470],{"class":1019,"line":3469},20,[1017,3471,2176],{"class":1056},[1017,3473,3475],{"class":1019,"line":3474},21,[1017,3476,1278],{"class":1031},[923,3478,3479,3480,3482,3483,3485],{},"但当头一棒的问题是函数不能作为函数的参数（如果仔细阅读函数章节的注意事项的同学可能知道这一点）。——但 ",[919,3481,921],{}," 通过模板的一些手段成功让“函数”成为了 ",[919,3484,921],{}," 的参数。",[1008,3487,3489],{"className":1010,"code":3488,"language":1012,"meta":1013,"style":1013},"#include \u003Calgorithm>\nint main() {\n    int a[100]{};\n    int n;\n    \u002F\u002F [...] 输入 a[0] ~ a[n - 1]\n\n    std::sort(&a[0], &a[n], \u002F* 一个返回 a > b 的函数 *\u002F);\n\n    \u002F\u002F a[0] ~ a[n - 1] 已从大到小排好序\n}\n",[919,3490,3491,3501,3511,3523,3531,3535,3539,3572,3576,3581],{"__ignoreMap":1013},[1017,3492,3493,3495,3497,3499],{"class":1019,"line":1020},[1017,3494,2082],{"class":1063},[1017,3496,1178],{"class":1031},[1017,3498,2088],{"class":2087},[1017,3500,2091],{"class":1031},[1017,3502,3503,3505,3507,3509],{"class":1019,"line":1042},[1017,3504,1024],{"class":1023},[1017,3506,1588],{"class":1324},[1017,3508,1591],{"class":1031},[1017,3510,1107],{"class":1031},[1017,3512,3513,3515,3517,3519,3521],{"class":1019,"line":1053},[1017,3514,1598],{"class":1023},[1017,3516,1028],{"class":1027},[1017,3518,1032],{"class":1031},[1017,3520,1036],{"class":1035},[1017,3522,1039],{"class":1031},[1017,3524,3525,3527,3529],{"class":1019,"line":1060},[1017,3526,1598],{"class":1023},[1017,3528,1047],{"class":1027},[1017,3530,1050],{"class":1031},[1017,3532,3533],{"class":1019,"line":1110},[1017,3534,1619],{"class":1056},[1017,3536,3537],{"class":1019,"line":1155},[1017,3538,2131],{"emptyLinePlaceholder":2130},[1017,3540,3541,3543,3545,3547,3549,3551,3553,3555,3557,3559,3561,3563,3565,3567,3570],{"class":1019,"line":1193},[1017,3542,2142],{"class":2141},[1017,3544,2145],{"class":1031},[1017,3546,1681],{"class":1324},[1017,3548,1627],{"class":1031},[1017,3550,941],{"class":1027},[1017,3552,1032],{"class":1031},[1017,3554,1075],{"class":1035},[1017,3556,1636],{"class":1031},[1017,3558,2007],{"class":1031},[1017,3560,941],{"class":1027},[1017,3562,1032],{"class":1031},[1017,3564,1293],{"class":1027},[1017,3566,1636],{"class":1031},[1017,3568,3569],{"class":1056}," \u002F* 一个返回 a > b 的函数 *\u002F",[1017,3571,1641],{"class":1031},[1017,3573,3574],{"class":1019,"line":1214},[1017,3575,2131],{"emptyLinePlaceholder":2130},[1017,3577,3578],{"class":1019,"line":1242},[1017,3579,3580],{"class":1056},"    \u002F\u002F a[0] ~ a[n - 1] 已从大到小排好序\n",[1017,3582,3583],{"class":1019,"line":1263},[1017,3584,1278],{"class":1031},[923,3586,3587,3588,3590,3591,3594,3595,3598],{},"当你不提供这个第三参数时，",[919,3589,921],{}," 会选择名为 ",[919,3592,3593],{},"std::less{}"," 的“函数”——它会返回 ",[919,3596,3597],{},"a \u003C b"," 的结果。",[3600,3601,3602],"h3",{"id":3602},"如何提供第三参数",[923,3604,3605,3606,3608,3609,3611,3612,3614],{},"最显而易见的方法是自己写一个 ",[919,3607,3048],{}," 函数，然后将 ",[919,3610,3048],{}," 这个名字作为 ",[919,3613,921],{}," 的第三参数。",[1008,3616,3618],{"className":1010,"code":3617,"language":1012,"meta":1013,"style":1013},"#include \u003Calgorithm>\nbool cmp(int a, int b) {\n    return a > b;\n}\nint main() {\n    int a[100]{};\n    int n;\n    \u002F\u002F [...] 输入 a[0] ~ a[n - 1]\n\n    std::sort(&a[0], &a[n], cmp);\n\n    \u002F\u002F a[0] ~ a[n - 1] 已从大到小排好序\n}\n",[919,3619,3620,3630,3652,3665,3669,3679,3691,3699,3703,3707,3739,3743,3747],{"__ignoreMap":1013},[1017,3621,3622,3624,3626,3628],{"class":1019,"line":1020},[1017,3623,2082],{"class":1063},[1017,3625,1178],{"class":1031},[1017,3627,2088],{"class":2087},[1017,3629,2091],{"class":1031},[1017,3631,3632,3634,3636,3638,3640,3642,3644,3646,3648,3650],{"class":1019,"line":1042},[1017,3633,2870],{"class":1023},[1017,3635,2873],{"class":1324},[1017,3637,1328],{"class":1031},[1017,3639,1024],{"class":1023},[1017,3641,1028],{"class":1334},[1017,3643,1337],{"class":1031},[1017,3645,1340],{"class":1023},[1017,3647,2886],{"class":1334},[1017,3649,1345],{"class":1031},[1017,3651,1107],{"class":1031},[1017,3653,3654,3656,3658,3661,3663],{"class":1019,"line":1053},[1017,3655,2895],{"class":1063},[1017,3657,2898],{"class":1027},[1017,3659,3660],{"class":1031},">",[1017,3662,2886],{"class":1027},[1017,3664,1050],{"class":1031},[1017,3666,3667],{"class":1019,"line":1060},[1017,3668,1278],{"class":1031},[1017,3670,3671,3673,3675,3677],{"class":1019,"line":1110},[1017,3672,1024],{"class":1023},[1017,3674,1588],{"class":1324},[1017,3676,1591],{"class":1031},[1017,3678,1107],{"class":1031},[1017,3680,3681,3683,3685,3687,3689],{"class":1019,"line":1155},[1017,3682,1598],{"class":1023},[1017,3684,1028],{"class":1027},[1017,3686,1032],{"class":1031},[1017,3688,1036],{"class":1035},[1017,3690,1039],{"class":1031},[1017,3692,3693,3695,3697],{"class":1019,"line":1193},[1017,3694,1598],{"class":1023},[1017,3696,1047],{"class":1027},[1017,3698,1050],{"class":1031},[1017,3700,3701],{"class":1019,"line":1214},[1017,3702,1619],{"class":1056},[1017,3704,3705],{"class":1019,"line":1242},[1017,3706,2131],{"emptyLinePlaceholder":2130},[1017,3708,3709,3711,3713,3715,3717,3719,3721,3723,3725,3727,3729,3731,3733,3735,3737],{"class":1019,"line":1263},[1017,3710,2142],{"class":2141},[1017,3712,2145],{"class":1031},[1017,3714,1681],{"class":1324},[1017,3716,1627],{"class":1031},[1017,3718,941],{"class":1027},[1017,3720,1032],{"class":1031},[1017,3722,1075],{"class":1035},[1017,3724,1636],{"class":1031},[1017,3726,2007],{"class":1031},[1017,3728,941],{"class":1027},[1017,3730,1032],{"class":1031},[1017,3732,1293],{"class":1027},[1017,3734,1636],{"class":1031},[1017,3736,2873],{"class":1027},[1017,3738,1641],{"class":1031},[1017,3740,3741],{"class":1019,"line":1269},[1017,3742,2131],{"emptyLinePlaceholder":2130},[1017,3744,3745],{"class":1019,"line":1275},[1017,3746,3580],{"class":1056},[1017,3748,3749],{"class":1019,"line":1281},[1017,3750,1278],{"class":1031},[923,3752,3753],{},"看上去很不错，但实际背后有一些细节问题。",[3755,3756,3757],"blockquote",{},[923,3758,3759,3760,3762,3763,3765,3766,3769,3770,3772],{},"当 ",[919,3761,3048],{}," 不作为函数调用运算符的左操作数时，它必然发生隐式转换：转换到指向自身的函数指针。因此在这里，",[919,3764,3048],{}," 其实是 ",[919,3767,3768],{},"bool(*)(int, int)"," 类型的函数指针。从而，",[919,3771,921],{}," 能够接受一个指针作为参数。你以为你传入了函数，“打破了”之前所说“函数不能所以函数作为参数”的规则，其实不是这样的：你传入了一个指针进去。",[923,3774,3775],{},"我个人更推荐的写法是所谓“Lambda 表达式”：即一个临时的“函数”。",[1008,3777,3779],{"className":1010,"code":3778,"language":1012,"meta":1013,"style":1013},"#include \u003Calgorithm>\nint main() {\n    int a[100]{};\n    int n;\n    \u002F\u002F [...] 输入 a[0] ~ a[n - 1]\n\n    std::sort(&a[0], &a[n], [](\u002Fint a, int b){ return a > b; });\n\n    \u002F\u002F a[0] ~ a[n - 1] 已从大到小排好序\n}\n",[919,3780,3781,3791,3801,3813,3821,3825,3829,3890,3894,3898],{"__ignoreMap":1013},[1017,3782,3783,3785,3787,3789],{"class":1019,"line":1020},[1017,3784,2082],{"class":1063},[1017,3786,1178],{"class":1031},[1017,3788,2088],{"class":2087},[1017,3790,2091],{"class":1031},[1017,3792,3793,3795,3797,3799],{"class":1019,"line":1042},[1017,3794,1024],{"class":1023},[1017,3796,1588],{"class":1324},[1017,3798,1591],{"class":1031},[1017,3800,1107],{"class":1031},[1017,3802,3803,3805,3807,3809,3811],{"class":1019,"line":1053},[1017,3804,1598],{"class":1023},[1017,3806,1028],{"class":1027},[1017,3808,1032],{"class":1031},[1017,3810,1036],{"class":1035},[1017,3812,1039],{"class":1031},[1017,3814,3815,3817,3819],{"class":1019,"line":1060},[1017,3816,1598],{"class":1023},[1017,3818,1047],{"class":1027},[1017,3820,1050],{"class":1031},[1017,3822,3823],{"class":1019,"line":1110},[1017,3824,1619],{"class":1056},[1017,3826,3827],{"class":1019,"line":1155},[1017,3828,2131],{"emptyLinePlaceholder":2130},[1017,3830,3831,3833,3835,3837,3839,3841,3843,3845,3847,3849,3851,3853,3855,3857,3860,3863,3865,3867,3869,3871,3873,3876,3879,3881,3883,3885,3887],{"class":1019,"line":1193},[1017,3832,2142],{"class":2141},[1017,3834,2145],{"class":1031},[1017,3836,1681],{"class":1324},[1017,3838,1627],{"class":1031},[1017,3840,941],{"class":1027},[1017,3842,1032],{"class":1031},[1017,3844,1075],{"class":1035},[1017,3846,1636],{"class":1031},[1017,3848,2007],{"class":1031},[1017,3850,941],{"class":1027},[1017,3852,1032],{"class":1031},[1017,3854,1293],{"class":1027},[1017,3856,1636],{"class":1031},[1017,3858,3859],{"class":1031}," [](",[1017,3861,3862],{"class":1027},"\u002F",[1017,3864,1024],{"class":1023},[1017,3866,1028],{"class":1334},[1017,3868,1337],{"class":1031},[1017,3870,1340],{"class":1023},[1017,3872,2886],{"class":1334},[1017,3874,3875],{"class":1031},"){",[1017,3877,3878],{"class":1063}," return",[1017,3880,2898],{"class":1027},[1017,3882,3660],{"class":1031},[1017,3884,2886],{"class":1027},[1017,3886,1081],{"class":1031},[1017,3888,3889],{"class":1031}," });\n",[1017,3891,3892],{"class":1019,"line":1214},[1017,3893,2131],{"emptyLinePlaceholder":2130},[1017,3895,3896],{"class":1019,"line":1242},[1017,3897,3580],{"class":1056},[1017,3899,3900],{"class":1019,"line":1263},[1017,3901,1278],{"class":1031},[923,3903,3904,3905,3908,3909,3911,3912,3914,3915,3918,3919,3922],{},"这里，",[919,3906,3907],{},"[](\u002Fint a, int b){ return a > b; }"," 是一个临时的、没有名字的“函数”。或者，你可以将它理解为函数类型的字面量。它接受两个 ",[919,3910,1024],{}," 类型参数 ",[919,3913,941],{}," ",[919,3916,3917],{},"b","，然后返回 ",[919,3920,3921],{},"a > b"," 的值。",[3755,3924,3925],{},[923,3926,3927,3928,3930],{},"Lambda 表达式不是函数。它其实是一个对象（也就是变量），所以这也不会惹上“函数不能用函数作为参数”的麻烦。",[919,3929,3593],{}," 是同样的道理。",[930,3932,3933],{"id":3933},"结构体的排序",[1008,3935,3937],{"className":1010,"code":3936,"language":1012,"meta":1013,"style":1013},"#include \u003Calgorithm>\nstruct S {\n    int x, y;\n};\nint main() {\n    S a[100]{};\n    int n;\n    \u002F\u002F [...]\n    std::sort(&a[0], &a[n]); \u002F\u002F 编译错误！\n}\n",[919,3938,3939,3949,3959,3973,3977,3987,3998,4006,4011,4043],{"__ignoreMap":1013},[1017,3940,3941,3943,3945,3947],{"class":1019,"line":1020},[1017,3942,2082],{"class":1063},[1017,3944,1178],{"class":1031},[1017,3946,2088],{"class":2087},[1017,3948,2091],{"class":1031},[1017,3950,3951,3954,3957],{"class":1019,"line":1042},[1017,3952,3953],{"class":1023},"struct",[1017,3955,3956],{"class":2141}," S",[1017,3958,1107],{"class":1031},[1017,3960,3961,3963,3966,3968,3971],{"class":1019,"line":1053},[1017,3962,1598],{"class":1023},[1017,3964,3965],{"class":1120}," x",[1017,3967,1337],{"class":1031},[1017,3969,3970],{"class":1120}," y",[1017,3972,1050],{"class":1031},[1017,3974,3975],{"class":1019,"line":1060},[1017,3976,1735],{"class":1031},[1017,3978,3979,3981,3983,3985],{"class":1019,"line":1110},[1017,3980,1024],{"class":1023},[1017,3982,1588],{"class":1324},[1017,3984,1591],{"class":1031},[1017,3986,1107],{"class":1031},[1017,3988,3989,3992,3994,3996],{"class":1019,"line":1155},[1017,3990,3991],{"class":1027},"    S a",[1017,3993,1032],{"class":1031},[1017,3995,1036],{"class":1035},[1017,3997,1039],{"class":1031},[1017,3999,4000,4002,4004],{"class":1019,"line":1193},[1017,4001,1598],{"class":1023},[1017,4003,1047],{"class":1027},[1017,4005,1050],{"class":1031},[1017,4007,4008],{"class":1019,"line":1214},[1017,4009,4010],{"class":1056},"    \u002F\u002F [...]\n",[1017,4012,4013,4015,4017,4019,4021,4023,4025,4027,4029,4031,4033,4035,4037,4040],{"class":1019,"line":1242},[1017,4014,2142],{"class":2141},[1017,4016,2145],{"class":1031},[1017,4018,1681],{"class":1324},[1017,4020,1627],{"class":1031},[1017,4022,941],{"class":1027},[1017,4024,1032],{"class":1031},[1017,4026,1075],{"class":1035},[1017,4028,1636],{"class":1031},[1017,4030,2007],{"class":1031},[1017,4032,941],{"class":1027},[1017,4034,1032],{"class":1031},[1017,4036,1293],{"class":1027},[1017,4038,4039],{"class":1031},"]);",[1017,4041,4042],{"class":1056}," \u002F\u002F 编译错误！\n",[1017,4044,4045],{"class":1019,"line":1263},[1017,4046,1278],{"class":1031},[923,4048,4049,4050,4052,4053,4055,4056,4058,4059,4062,4063,4065],{},"想当然地这样写是不对的。因为我们刚才提到了，如果你不提供 ",[919,4051,921],{}," 的第三参数，那么它默认的第三参数——",[919,4054,3593],{}," 会尝试 ",[919,4057,3597],{}," 表达式的结果作为排序依据。但我们的结构体 ",[919,4060,4061],{},"S"," 是无法用 ",[919,4064,1087],{}," 运算符比较的：",[1008,4067,4069],{"className":1010,"code":4068,"language":1012,"meta":1013,"style":1013},"struct S {\n    int x, y;\n};\nint main() {\n    S a, b;\n    a \u003C b; \u002F\u002F 编译错误\n}\n",[919,4070,4071,4079,4091,4095,4105,4115,4129],{"__ignoreMap":1013},[1017,4072,4073,4075,4077],{"class":1019,"line":1020},[1017,4074,3953],{"class":1023},[1017,4076,3956],{"class":2141},[1017,4078,1107],{"class":1031},[1017,4080,4081,4083,4085,4087,4089],{"class":1019,"line":1042},[1017,4082,1598],{"class":1023},[1017,4084,3965],{"class":1120},[1017,4086,1337],{"class":1031},[1017,4088,3970],{"class":1120},[1017,4090,1050],{"class":1031},[1017,4092,4093],{"class":1019,"line":1053},[1017,4094,1735],{"class":1031},[1017,4096,4097,4099,4101,4103],{"class":1019,"line":1060},[1017,4098,1024],{"class":1023},[1017,4100,1588],{"class":1324},[1017,4102,1591],{"class":1031},[1017,4104,1107],{"class":1031},[1017,4106,4107,4109,4111,4113],{"class":1019,"line":1110},[1017,4108,3991],{"class":1027},[1017,4110,1337],{"class":1031},[1017,4112,2886],{"class":1027},[1017,4114,1050],{"class":1031},[1017,4116,4117,4120,4122,4124,4126],{"class":1019,"line":1155},[1017,4118,4119],{"class":1027},"    a ",[1017,4121,1087],{"class":1031},[1017,4123,2886],{"class":1027},[1017,4125,1081],{"class":1031},[1017,4127,4128],{"class":1056}," \u002F\u002F 编译错误\n",[1017,4130,4131],{"class":1019,"line":1193},[1017,4132,1278],{"class":1031},[923,4134,4135],{},"那么为了解决结构体的排序问题，就衍生出两种解决办法。",[923,4137,4138],{},"第一种解决办法是手动给出用作比较的第三参数。下面的例子中使用了 Lambda 表达式：",[1008,4140,4142],{"className":1010,"code":4141,"language":1012,"meta":1013,"style":1013},"#include \u003Calgorithm>\nstruct S {\n    int x, y;\n};\nint main() {\n    S a[100]{};\n    int n;\n    \u002F\u002F [...]\n    std::sort(&a[0], &a[n], [](\u002FS a, S b) {\n        return a.x \u003C b.x;\n    });\n}\n",[919,4143,4144,4154,4162,4174,4178,4188,4198,4206,4210,4256,4280,4285],{"__ignoreMap":1013},[1017,4145,4146,4148,4150,4152],{"class":1019,"line":1020},[1017,4147,2082],{"class":1063},[1017,4149,1178],{"class":1031},[1017,4151,2088],{"class":2087},[1017,4153,2091],{"class":1031},[1017,4155,4156,4158,4160],{"class":1019,"line":1042},[1017,4157,3953],{"class":1023},[1017,4159,3956],{"class":2141},[1017,4161,1107],{"class":1031},[1017,4163,4164,4166,4168,4170,4172],{"class":1019,"line":1053},[1017,4165,1598],{"class":1023},[1017,4167,3965],{"class":1120},[1017,4169,1337],{"class":1031},[1017,4171,3970],{"class":1120},[1017,4173,1050],{"class":1031},[1017,4175,4176],{"class":1019,"line":1060},[1017,4177,1735],{"class":1031},[1017,4179,4180,4182,4184,4186],{"class":1019,"line":1110},[1017,4181,1024],{"class":1023},[1017,4183,1588],{"class":1324},[1017,4185,1591],{"class":1031},[1017,4187,1107],{"class":1031},[1017,4189,4190,4192,4194,4196],{"class":1019,"line":1155},[1017,4191,3991],{"class":1027},[1017,4193,1032],{"class":1031},[1017,4195,1036],{"class":1035},[1017,4197,1039],{"class":1031},[1017,4199,4200,4202,4204],{"class":1019,"line":1193},[1017,4201,1598],{"class":1023},[1017,4203,1047],{"class":1027},[1017,4205,1050],{"class":1031},[1017,4207,4208],{"class":1019,"line":1214},[1017,4209,4010],{"class":1056},[1017,4211,4212,4214,4216,4218,4220,4222,4224,4226,4228,4230,4232,4234,4236,4238,4240,4242,4244,4246,4248,4250,4252,4254],{"class":1019,"line":1242},[1017,4213,2142],{"class":2141},[1017,4215,2145],{"class":1031},[1017,4217,1681],{"class":1324},[1017,4219,1627],{"class":1031},[1017,4221,941],{"class":1027},[1017,4223,1032],{"class":1031},[1017,4225,1075],{"class":1035},[1017,4227,1636],{"class":1031},[1017,4229,2007],{"class":1031},[1017,4231,941],{"class":1027},[1017,4233,1032],{"class":1031},[1017,4235,1293],{"class":1027},[1017,4237,1636],{"class":1031},[1017,4239,3859],{"class":1031},[1017,4241,3862],{"class":1027},[1017,4243,4061],{"class":2141},[1017,4245,1028],{"class":1334},[1017,4247,1337],{"class":1031},[1017,4249,3956],{"class":2141},[1017,4251,2886],{"class":1334},[1017,4253,1345],{"class":1031},[1017,4255,1107],{"class":1031},[1017,4257,4258,4261,4263,4266,4269,4271,4273,4275,4278],{"class":1019,"line":1263},[1017,4259,4260],{"class":1063},"        return",[1017,4262,1028],{"class":1027},[1017,4264,4265],{"class":1031},".",[1017,4267,4268],{"class":1027},"x ",[1017,4270,1087],{"class":1031},[1017,4272,2886],{"class":1027},[1017,4274,4265],{"class":1031},[1017,4276,4277],{"class":1027},"x",[1017,4279,1050],{"class":1031},[1017,4281,4282],{"class":1019,"line":1269},[1017,4283,4284],{"class":1031},"    });\n",[1017,4286,4287],{"class":1019,"line":1275},[1017,4288,1278],{"class":1031},[923,4290,4291,4292,1549,4294,4296,4297,4299],{},"这样，",[919,4293,1548],{},[919,4295,1552],{}," 就会按照 ",[919,4298,4277],{}," 成员从小到大排序。你还可以编写更复杂的判断规则：",[1008,4301,4303],{"className":1010,"code":4302,"language":1012,"meta":1013,"style":1013},"#include \u003Calgorithm>\nstruct S {\n    int x, y;\n};\nint main() {\n    S a[100]{};\n    int n;\n    \u002F\u002F [...]\n    std::sort(&a[0], &a[n], [](\u002FS a, S b) {\n        if (a.x == b.x) return a.y \u003C b.y;\n        else return a.x \u003C b.x;\n    });\n}\n",[919,4304,4305,4315,4323,4335,4339,4349,4359,4367,4371,4417,4460,4483,4487],{"__ignoreMap":1013},[1017,4306,4307,4309,4311,4313],{"class":1019,"line":1020},[1017,4308,2082],{"class":1063},[1017,4310,1178],{"class":1031},[1017,4312,2088],{"class":2087},[1017,4314,2091],{"class":1031},[1017,4316,4317,4319,4321],{"class":1019,"line":1042},[1017,4318,3953],{"class":1023},[1017,4320,3956],{"class":2141},[1017,4322,1107],{"class":1031},[1017,4324,4325,4327,4329,4331,4333],{"class":1019,"line":1053},[1017,4326,1598],{"class":1023},[1017,4328,3965],{"class":1120},[1017,4330,1337],{"class":1031},[1017,4332,3970],{"class":1120},[1017,4334,1050],{"class":1031},[1017,4336,4337],{"class":1019,"line":1060},[1017,4338,1735],{"class":1031},[1017,4340,4341,4343,4345,4347],{"class":1019,"line":1110},[1017,4342,1024],{"class":1023},[1017,4344,1588],{"class":1324},[1017,4346,1591],{"class":1031},[1017,4348,1107],{"class":1031},[1017,4350,4351,4353,4355,4357],{"class":1019,"line":1155},[1017,4352,3991],{"class":1027},[1017,4354,1032],{"class":1031},[1017,4356,1036],{"class":1035},[1017,4358,1039],{"class":1031},[1017,4360,4361,4363,4365],{"class":1019,"line":1193},[1017,4362,1598],{"class":1023},[1017,4364,1047],{"class":1027},[1017,4366,1050],{"class":1031},[1017,4368,4369],{"class":1019,"line":1214},[1017,4370,4010],{"class":1056},[1017,4372,4373,4375,4377,4379,4381,4383,4385,4387,4389,4391,4393,4395,4397,4399,4401,4403,4405,4407,4409,4411,4413,4415],{"class":1019,"line":1242},[1017,4374,2142],{"class":2141},[1017,4376,2145],{"class":1031},[1017,4378,1681],{"class":1324},[1017,4380,1627],{"class":1031},[1017,4382,941],{"class":1027},[1017,4384,1032],{"class":1031},[1017,4386,1075],{"class":1035},[1017,4388,1636],{"class":1031},[1017,4390,2007],{"class":1031},[1017,4392,941],{"class":1027},[1017,4394,1032],{"class":1031},[1017,4396,1293],{"class":1027},[1017,4398,1636],{"class":1031},[1017,4400,3859],{"class":1031},[1017,4402,3862],{"class":1027},[1017,4404,4061],{"class":2141},[1017,4406,1028],{"class":1334},[1017,4408,1337],{"class":1031},[1017,4410,3956],{"class":2141},[1017,4412,2886],{"class":1334},[1017,4414,1345],{"class":1031},[1017,4416,1107],{"class":1031},[1017,4418,4419,4421,4423,4425,4427,4429,4432,4434,4436,4438,4440,4442,4444,4446,4449,4451,4453,4455,4458],{"class":1019,"line":1263},[1017,4420,1158],{"class":1063},[1017,4422,1067],{"class":1031},[1017,4424,941],{"class":1027},[1017,4426,4265],{"class":1031},[1017,4428,4268],{"class":1027},[1017,4430,4431],{"class":1031},"==",[1017,4433,2886],{"class":1027},[1017,4435,4265],{"class":1031},[1017,4437,4277],{"class":1027},[1017,4439,1345],{"class":1031},[1017,4441,3878],{"class":1063},[1017,4443,1028],{"class":1027},[1017,4445,4265],{"class":1031},[1017,4447,4448],{"class":1027},"y ",[1017,4450,1087],{"class":1031},[1017,4452,2886],{"class":1027},[1017,4454,4265],{"class":1031},[1017,4456,4457],{"class":1027},"y",[1017,4459,1050],{"class":1031},[1017,4461,4462,4465,4467,4469,4471,4473,4475,4477,4479,4481],{"class":1019,"line":1269},[1017,4463,4464],{"class":1063},"        else",[1017,4466,3878],{"class":1063},[1017,4468,1028],{"class":1027},[1017,4470,4265],{"class":1031},[1017,4472,4268],{"class":1027},[1017,4474,1087],{"class":1031},[1017,4476,2886],{"class":1027},[1017,4478,4265],{"class":1031},[1017,4480,4277],{"class":1027},[1017,4482,1050],{"class":1031},[1017,4484,4485],{"class":1019,"line":1275},[1017,4486,4284],{"class":1031},[1017,4488,4489],{"class":1019,"line":1281},[1017,4490,1278],{"class":1031},[3600,4492,4494],{"id":4493},"警告善用引用","警告：善用引用",[923,4496,4497,4498,4501,4502,4504,4505,4508],{},"对于 ",[919,4499,4500],{},"std::string"," 等类型，复制 ",[919,4503,4500],{}," 的开销非常大。如果你要编写自己的排序规定函数，那么请",[1299,4506,4507],{},"务必使用引用传参","：",[1008,4510,4512],{"className":1010,"code":4511,"language":1012,"meta":1013,"style":1013},"#include \u003Calgorithm>\n#include \u003Cstring>\nint main() {\n    std::string a[100]{};\n    int n;\n    \u002F\u002F [...]\n    std::sort(&a[0], &a[n], [](\u002Fconst std::string& a, const std::string& b) {\n        return a.length() \u003C b.length();\n    });\n}\n",[919,4513,4514,4524,4535,4545,4560,4568,4572,4638,4662,4666],{"__ignoreMap":1013},[1017,4515,4516,4518,4520,4522],{"class":1019,"line":1020},[1017,4517,2082],{"class":1063},[1017,4519,1178],{"class":1031},[1017,4521,2088],{"class":2087},[1017,4523,2091],{"class":1031},[1017,4525,4526,4528,4530,4533],{"class":1019,"line":1042},[1017,4527,2082],{"class":1063},[1017,4529,1178],{"class":1031},[1017,4531,4532],{"class":2087},"string",[1017,4534,2091],{"class":1031},[1017,4536,4537,4539,4541,4543],{"class":1019,"line":1053},[1017,4538,1024],{"class":1023},[1017,4540,1588],{"class":1324},[1017,4542,1591],{"class":1031},[1017,4544,1107],{"class":1031},[1017,4546,4547,4549,4551,4554,4556,4558],{"class":1019,"line":1060},[1017,4548,2142],{"class":2141},[1017,4550,2145],{"class":1031},[1017,4552,4553],{"class":1027},"string a",[1017,4555,1032],{"class":1031},[1017,4557,1036],{"class":1035},[1017,4559,1039],{"class":1031},[1017,4561,4562,4564,4566],{"class":1019,"line":1110},[1017,4563,1598],{"class":1023},[1017,4565,1047],{"class":1027},[1017,4567,1050],{"class":1031},[1017,4569,4570],{"class":1019,"line":1155},[1017,4571,4010],{"class":1056},[1017,4573,4574,4576,4578,4580,4582,4584,4586,4588,4590,4592,4594,4596,4598,4600,4602,4604,4607,4610,4612,4614,4617,4619,4621,4624,4626,4628,4630,4632,4634,4636],{"class":1019,"line":1193},[1017,4575,2142],{"class":2141},[1017,4577,2145],{"class":1031},[1017,4579,1681],{"class":1324},[1017,4581,1627],{"class":1031},[1017,4583,941],{"class":1027},[1017,4585,1032],{"class":1031},[1017,4587,1075],{"class":1035},[1017,4589,1636],{"class":1031},[1017,4591,2007],{"class":1031},[1017,4593,941],{"class":1027},[1017,4595,1032],{"class":1031},[1017,4597,1293],{"class":1027},[1017,4599,1636],{"class":1031},[1017,4601,3859],{"class":1031},[1017,4603,3862],{"class":1027},[1017,4605,4606],{"class":1023},"const",[1017,4608,4609],{"class":2141}," std",[1017,4611,2145],{"class":1031},[1017,4613,4532],{"class":2141},[1017,4615,4616],{"class":1023},"&",[1017,4618,1028],{"class":1334},[1017,4620,1337],{"class":1031},[1017,4622,4623],{"class":1023}," const",[1017,4625,4609],{"class":2141},[1017,4627,2145],{"class":1031},[1017,4629,4532],{"class":2141},[1017,4631,4616],{"class":1023},[1017,4633,2886],{"class":1334},[1017,4635,1345],{"class":1031},[1017,4637,1107],{"class":1031},[1017,4639,4640,4642,4644,4646,4649,4651,4653,4655,4657,4659],{"class":1019,"line":1214},[1017,4641,4260],{"class":1063},[1017,4643,1028],{"class":1027},[1017,4645,4265],{"class":1031},[1017,4647,4648],{"class":1324},"length",[1017,4650,1591],{"class":1031},[1017,4652,1178],{"class":1031},[1017,4654,2886],{"class":1027},[1017,4656,4265],{"class":1031},[1017,4658,4648],{"class":1324},[1017,4660,4661],{"class":1031},"();\n",[1017,4663,4664],{"class":1019,"line":1242},[1017,4665,4284],{"class":1031},[1017,4667,4668],{"class":1019,"line":1263},[1017,4669,1278],{"class":1031},[923,4671,4672,4673,4675,4676,4678,4679,4681,4682,4685],{},"第二种解决思路是手动提供 ",[919,4674,4061],{}," 的 ",[919,4677,1087],{}," 运算符定义，然后让 ",[919,4680,921],{}," 的默认第三参数选择它。如果你阅读过",[941,4683,4684],{"href":460},"第六章的运算符重载","，那么你可以很轻松地写出下面的正确代码：",[1008,4687,4689],{"className":1010,"code":4688,"language":1012,"meta":1013,"style":1013},"#include \u003Calgorithm>\nstruct S {\n    int x, y;\n    bool operator\u003C(const S& b) const {\n        return x \u003C b.x;\n    }\n};\nint main() {\n    S a[100]{};\n    int n;\n    \u002F\u002F [...]\n    std::sort(&a[0], &a[n]); \u002F\u002F 使用 \u003C 运算符来排序\n}\n",[919,4690,4691,4701,4709,4721,4747,4764,4768,4772,4782,4792,4800,4804,4835],{"__ignoreMap":1013},[1017,4692,4693,4695,4697,4699],{"class":1019,"line":1020},[1017,4694,2082],{"class":1063},[1017,4696,1178],{"class":1031},[1017,4698,2088],{"class":2087},[1017,4700,2091],{"class":1031},[1017,4702,4703,4705,4707],{"class":1019,"line":1042},[1017,4704,3953],{"class":1023},[1017,4706,3956],{"class":2141},[1017,4708,1107],{"class":1031},[1017,4710,4711,4713,4715,4717,4719],{"class":1019,"line":1053},[1017,4712,1598],{"class":1023},[1017,4714,3965],{"class":1120},[1017,4716,1337],{"class":1031},[1017,4718,3970],{"class":1120},[1017,4720,1050],{"class":1031},[1017,4722,4723,4726,4729,4731,4733,4735,4737,4739,4741,4743,4745],{"class":1019,"line":1060},[1017,4724,4725],{"class":1023},"    bool",[1017,4727,4728],{"class":1035}," operator",[1017,4730,1087],{"class":2141},[1017,4732,1328],{"class":1031},[1017,4734,4606],{"class":1023},[1017,4736,3956],{"class":2141},[1017,4738,4616],{"class":1023},[1017,4740,2886],{"class":1334},[1017,4742,1345],{"class":1031},[1017,4744,4623],{"class":1023},[1017,4746,1107],{"class":1031},[1017,4748,4749,4751,4754,4756,4758,4760,4762],{"class":1019,"line":1110},[1017,4750,4260],{"class":1063},[1017,4752,4753],{"class":1120}," x ",[1017,4755,1087],{"class":1031},[1017,4757,2886],{"class":1027},[1017,4759,4265],{"class":1031},[1017,4761,4277],{"class":1027},[1017,4763,1050],{"class":1031},[1017,4765,4766],{"class":1019,"line":1155},[1017,4767,1272],{"class":1031},[1017,4769,4770],{"class":1019,"line":1193},[1017,4771,1735],{"class":1031},[1017,4773,4774,4776,4778,4780],{"class":1019,"line":1214},[1017,4775,1024],{"class":1023},[1017,4777,1588],{"class":1324},[1017,4779,1591],{"class":1031},[1017,4781,1107],{"class":1031},[1017,4783,4784,4786,4788,4790],{"class":1019,"line":1242},[1017,4785,3991],{"class":1027},[1017,4787,1032],{"class":1031},[1017,4789,1036],{"class":1035},[1017,4791,1039],{"class":1031},[1017,4793,4794,4796,4798],{"class":1019,"line":1263},[1017,4795,1598],{"class":1023},[1017,4797,1047],{"class":1027},[1017,4799,1050],{"class":1031},[1017,4801,4802],{"class":1019,"line":1269},[1017,4803,4010],{"class":1056},[1017,4805,4806,4808,4810,4812,4814,4816,4818,4820,4822,4824,4826,4828,4830,4832],{"class":1019,"line":1275},[1017,4807,2142],{"class":2141},[1017,4809,2145],{"class":1031},[1017,4811,1681],{"class":1324},[1017,4813,1627],{"class":1031},[1017,4815,941],{"class":1027},[1017,4817,1032],{"class":1031},[1017,4819,1075],{"class":1035},[1017,4821,1636],{"class":1031},[1017,4823,2007],{"class":1031},[1017,4825,941],{"class":1027},[1017,4827,1032],{"class":1031},[1017,4829,1293],{"class":1027},[1017,4831,4039],{"class":1031},[1017,4833,4834],{"class":1056}," \u002F\u002F 使用 \u003C 运算符来排序\n",[1017,4836,4837],{"class":1019,"line":1281},[1017,4838,1278],{"class":1031},[3600,4840,4841],{"id":286},"二维数组？",[923,4843,4844,4845,4847,4848,3914,4850,4853,4854,4856,4857,4859,4860,4862],{},"类似地，不能直接对二维数组做 ",[919,4846,921],{},"。原因是：二维数组的 ",[919,4849,1541],{},[919,4851,4852],{},"&a[n]"," 是指向一维数组的指针——换而言之，被排序的对象是一个个的一维数组。那么一维数组是不能用 ",[919,4855,1087],{}," 比较的（它连赋值都不行，你还指望什么！）。即便你自己提供了作为排序依据的第三参数也是不够的：",[919,4858,921],{}," 内部在交换元素时会用到复制赋值与复制初始化，而这两件事恰好都是数组无法做到的。所以对不起，二维数组无法用 ",[919,4861,921],{}," 排序。",[930,4864,4866],{"id":4865},"stl-容器","STL 容器",[923,4868,4869,4870,4872],{},"如果你使用 STL 容器，你应当知道在 STL 容器中是用“迭代器”这一概念来对应数组中指针的概念的。所以，本应传入指针的 ",[919,4871,921],{}," 的第一、二参数，在 STL 容器中应当使用对应的迭代器。",[1008,4874,4876],{"className":1010,"code":4875,"language":1012,"meta":1013,"style":1013},"#include \u003Cvector>\n#include \u003Calgorithm>\nint main() {\n    std::vector\u003Cint> a;\n    \u002F\u002F [...]\n    std::sort(a.begin(), a.end() \u002F* 可选的第三参数 *\u002F);\n}\n",[919,4877,4878,4889,4899,4909,4927,4931,4963],{"__ignoreMap":1013},[1017,4879,4880,4882,4884,4887],{"class":1019,"line":1020},[1017,4881,2082],{"class":1063},[1017,4883,1178],{"class":1031},[1017,4885,4886],{"class":2087},"vector",[1017,4888,2091],{"class":1031},[1017,4890,4891,4893,4895,4897],{"class":1019,"line":1042},[1017,4892,2082],{"class":1063},[1017,4894,1178],{"class":1031},[1017,4896,2088],{"class":2087},[1017,4898,2091],{"class":1031},[1017,4900,4901,4903,4905,4907],{"class":1019,"line":1053},[1017,4902,1024],{"class":1023},[1017,4904,1588],{"class":1324},[1017,4906,1591],{"class":1031},[1017,4908,1107],{"class":1031},[1017,4910,4911,4913,4915,4917,4919,4921,4923,4925],{"class":1019,"line":1060},[1017,4912,2142],{"class":2141},[1017,4914,2145],{"class":1031},[1017,4916,4886],{"class":1027},[1017,4918,1087],{"class":1031},[1017,4920,1024],{"class":1023},[1017,4922,3660],{"class":1031},[1017,4924,1028],{"class":1027},[1017,4926,1050],{"class":1031},[1017,4928,4929],{"class":1019,"line":1110},[1017,4930,4010],{"class":1056},[1017,4932,4933,4935,4937,4939,4941,4943,4945,4947,4950,4952,4954,4956,4958,4961],{"class":1019,"line":1155},[1017,4934,2142],{"class":2141},[1017,4936,2145],{"class":1031},[1017,4938,1681],{"class":1324},[1017,4940,1328],{"class":1031},[1017,4942,941],{"class":1027},[1017,4944,4265],{"class":1031},[1017,4946,1749],{"class":1324},[1017,4948,4949],{"class":1031},"(),",[1017,4951,1028],{"class":1027},[1017,4953,4265],{"class":1031},[1017,4955,2035],{"class":1324},[1017,4957,1591],{"class":1031},[1017,4959,4960],{"class":1056}," \u002F* 可选的第三参数 *\u002F",[1017,4962,1641],{"class":1031},[1017,4964,4965],{"class":1019,"line":1193},[1017,4966,1278],{"class":1031},[4968,4969,4970],"style",{},"html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":1013,"searchDepth":1020,"depth":1042,"links":4972},[4973,4974,4975,4976,4978,4981,4985],{"id":932,"depth":1042,"text":932},{"id":987,"depth":1042,"text":826},{"id":1000,"depth":1042,"text":1000},{"id":2060,"depth":1042,"text":4977},"std::sort 的基本使用",{"id":2331,"depth":1042,"text":2331,"children":4979},[4980],{"id":3602,"depth":1053,"text":3602},{"id":3933,"depth":1042,"text":3933,"children":4982},[4983,4984],{"id":4493,"depth":1053,"text":4494},{"id":286,"depth":1053,"text":4841},{"id":4865,"depth":1042,"text":4866},"md",null,{},{"icon":769},{"title":822,"description":921},"At1aJWrDZF_toKwErPOMto2qzLN2K6niTBPAYFR_Q5U",[4993,4994],{"title":818,"path":819,"stem":820,"description":818,"icon":796,"children":-1},{"title":826,"path":828,"stem":829,"description":826,"icon":827,"children":-1},1784618109318]