C++ STL priority_queue自定义排序实现方法详解
前面讲解 priority_queue 容器适配器时,还遗留一个问题,即当 头文件提供的排序方式不再适用时,如何自定义一个满足需求的排序规则。首先,无论 priority_queue 中存储的是基础数据类型,还是 string 类对象或者自定义的类对象,都可以使用函数对象的方式自定义排序规则。要想彻底理解这种方式的实现原理,首先要搞清楚 std::less 和 std::greater 各自的底层实现。需要注意的是,以成员函数的方式重载 > 或者 < 运算符时,该成员函数必须声明为 const 类型,且参数也必须为 const 类型,至于参数的传值方式是采用按引用传递还是按值传递,都可以。例如,将上面程序改为以友元函数的方式重载 < 运算符。
下载地址
用户评论