我想构造三个不同的priority_queue
的持有类Thing
,然后按Thing
持有的值不同的排序每个。我知道我可以在内部定义一个运算符方法,也可以定义一个对象的朋友,但是有没有办法让它使用不同的测试方法?我如何告诉它使用该方法而不是操作员方法?参数列表与创建运算符过载有什么不同?std :: priority_queue不同的比较
0
A
回答
2
与大多数STL容器一样,priority_queue
接受Compare class in its template arguments。
struct MyCompare1 {
bool operator()(const Thing& t1, const Thing& t2) {
// your logic here
}
};
std::priority_queue<Thing, std::vector<Thing>, MyCompare1> my_queue;
0
您可以传递将使用的自定义比较器类型,而不是默认值。这是priority_queue
的模板参数。
+0
我该如何做前言。你能指出一些解释这个(写,使用)的文档 – gardian06 2012-03-19 04:15:30
0
定义priority_queue时,可以指定比较函数作为第三个参数。请注意,第二个参数是基础容器类型,通常为std::vector
。
std::priority_queue<Thing> pq1;
std::priority_queue<Thing, std::vector<Thing>, std::greater<Thing> > pq2;
std::priority_queue<Thing, std::vector<Thing>, [your comparator here] > pq3;
相关问题
- 1. std :: map,std :: set和std :: priority_queue中的比较器
- 2. std :: priority_queue:不定义比较器类的自定义排序
- 3. STL priority_queue副本比较级
- 4. 在priority_queue中比较参数
- 5. 用自定义比较器返回priority_queue
- 6. C++ STL priority_queue,比较对象的方式
- 7. C++ priority_queue与lambda比较错误
- 8. 扩展std :: priority_queue的功能
- 9. 定义用于priority_queue的自定义比较器
- 10. 如何在C++中实现STL priority_queue中的这种比较类
- 11. C++的std ::设置比较
- 12. 将比较器传递给声明为类成员的priority_queue
- 13. C++的priority_queue的修改比较器无法正常工作
- 14. 为什么这个自定义比较器在为std :: sort工作时,在构建std :: priority_queue失败?
- 15. 比较不同dataframes
- 16. 类:: priority_queue一点儿也不使用比较谓词/模板参数
- 17. 比较2 std :: std ::对列表
- 18. 不同的比较签名:: LOWER_BOUND
- 19. 比较键和值std :: maps
- 20. 比较qsort和std :: sort
- 21. 比较不同的对象
- 22. 如何更新std :: priority_queue内的元素?
- 23. 如何在运行时指定priority_queue的比较器类
- 24. 如何在特定构造函数中使用STL priority_queue +比较器?
- 25. 比较不同颠覆respositories
- 26. 比较不同尺寸
- 27. Dijkstra std :: priority_queue的最短路径算法性能vs std :: set
- 28. C++ - 如何将std :: priority_queue中的元素复制到std :: vector
- 29. C++的std ::地图比较方法
- 30. 制作的std ::当比较元素
我该如何做前言。你能指出一些解释这个(写,使用)的文档吗? – gardian06 2012-03-19 04:16:55
该方法必须是它自己的类/结构,还是它可以是一个成员函数,类似于成员操作符<(const Thing&_t2)。 – gardian06 2012-03-19 04:38:09
visual studio引发操作符必须是非静态的,并且让我定义了一个操作符 – gardian06 2012-03-19 06:15:51