C++优先级队列声明
C++ Priority Queue Declaration
我正在查看C++中的优先级队列声明,但我不太明白。
priority_queue<string, vector<string>,function<bool(string,string)>>
min_heap([] (const string& a,const string& b) {return a.size()>=b.size();});
括号 [] 的目的是什么?这是函数定义的一部分吗?
另外,我是否可以通过使用布尔运算符来实现同样的事情?
整个表达式
[] (const string& a,const string& b) {return a.size()>=b.size();}
是一个 lambda 表达式。它是一个未命名类的对象,可以用两个字符串参数 a
和 b
调用,并返回 bool
。
你也可以自己编写这样的类(在这种情况下,它会有一个名字(:
struct Comp {
bool operator()(const string& a, const string& b) {
return a.size() > b.size();
}
};
priority_queue<string, vector<string>, Comp> min_heap;
// a value of type Comp will be value-initialized
请注意,比较器必须是严格的弱排序,因此必须使用>
而不是>=
。
如果性能很重要,最好定义一个命名类,因为函数调用运算符可以内联。
相关文章:
- .cpp和.h文件中的模板专用化声明
- boost::进程间消息队列引发错误
- 如果我只是不访问queue_front节点的子节点,而是将它们推到队列中呢?还是BFS吗
- 未在作用域中声明unordered_map
- C++避免重复声明的语法是什么
- 如何确保C++函数在定义之前声明(如override关键字)
- 错误:未在此范围内声明'reverse'
- Android NDK传感器向事件队列报告奇怪的间隔
- 获取错误:之前在此处声明的布尔队列的编辑<T>
- 为什么我们需要在优先级队列声明中添加一个向量作为参数?
- 如何在 c++ 中的函数参数中声明优先级队列
- 我正在声明一个自定义优先级队列,包括 pair<pair<int,int>int >,如何清除它?
- C++优先级队列声明
- 使用更大值和向量声明优先级队列
- 使用自定义比较器声明C++优先级队列的问题
- C++在else/if中声明一个优先级队列
- 在 c++ 中声明队列
- 无法访问在类中声明的私有成员:队列类模板
- 计时器队列未声明的标识符
- 优先级队列 - 关于声明的这个 C++ 代码有什么问题?