在 C++ 语言中,内置的排序算法(algorithm 库中的 sort 函数)只能对 C++ 的基础类型(如 int、double 等)做排序,而不能对自定义类型做排序。( )
这道题考的是 STL 中 std::sort 的模板机制和比较器传参。很多同学死记硬背'sort 需要比较器',却忽略了比较器完全可以自定义,从而误以为只能排基础类型。拿到题先想:sort 是模板,第二个参数能传什么?
审题时容易被'只能对基础类型'这种绝对化表述带偏,误选'正确'。其实命题人就是把'需要比较器'偷换成了'只能排基础类型',一字之差全题翻车。涉及代码的题目要逐行分析变量变化,注意迭代器失效问题。
GESP 五级 C++ 语言模块。命题人卡住的是那些只背过'sort 需要比较器'结论的初学者——他们一看到'自定义类型'就慌了,以为 sort 只能排 int、double 等基础类型。
std::sort 是算法库中的模板函数,它的核心设计思想是可定制。默认情况下,它调用元素的运算符重载(通常是 operator<)来判断大小。但关键点在于:第二个参数可以传入一个自定义的比较器(Comparator)。只要这个比较器能正确判断两个同类型元素的大小关系,sort 就能工作。这意味着,对于任何自定义类型(比如 struct 或 class),只要我们能定义好比较逻辑(重载 operator< 或者传入 lambda),sort 就能轻松处理。