Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;优先级队列声明 我在C++中看到一个优先级队列声明,但我不太明白。 priority_queue<string, vector<string>,function<bool(string,string)>> min_heap([] (const string& a,const string& b) {return a.size()>=b.size();}); 优先级队列 最小堆([](常量字符串&a,常量字符串&b){返回a.size()>=b.size();});_C++_Heap_Priority Queue - Fatal编程技术网

C++;优先级队列声明 我在C++中看到一个优先级队列声明,但我不太明白。 priority_queue<string, vector<string>,function<bool(string,string)>> min_heap([] (const string& a,const string& b) {return a.size()>=b.size();}); 优先级队列 最小堆([](常量字符串&a,常量字符串&b){返回a.size()>=b.size();});

C++;优先级队列声明 我在C++中看到一个优先级队列声明,但我不太明白。 priority_queue<string, vector<string>,function<bool(string,string)>> min_heap([] (const string& a,const string& b) {return a.size()>=b.size();}); 优先级队列 最小堆([](常量字符串&a,常量字符串&b){返回a.size()>=b.size();});,c++,heap,priority-queue,C++,Heap,Priority Queue,括号[]的用途是什么?这是函数定义的一部分吗 另外,我是否能够通过使用bool操作符实现同样的事情?整个表达式 [] (const string& a,const string& b) {return a.size()>=b.size();} 是一个lambda表达式。它是一个未命名类的对象,可以用两个字符串参数调用,a和b,并返回bool 您也可以自己编写这样一个类(在这种情况下,它将有一个名称): struct Comp{ 布尔运算符()(常量字符串和a、常量字符串和

括号[]的用途是什么?这是函数定义的一部分吗

另外,我是否能够通过使用bool操作符实现同样的事情?

整个表达式

[] (const string& a,const string& b) {return a.size()>=b.size();}
是一个lambda表达式。它是一个未命名类的对象,可以用两个字符串参数调用,
a
b
,并返回
bool

您也可以自己编写这样一个类(在这种情况下,它将有一个名称):

struct Comp{
布尔运算符()(常量字符串和a、常量字符串和b){
返回a.size()>b.size();
}
};
优先级队列最小堆;
//Comp类型的值将被初始化
请注意,比较器必须是严格的弱排序,因此必须使用
而不是
=


如果性能很重要,最好定义一个命名类,因为函数调用操作符可以内联。

它是函数的capture子句。它是lambda。去读一本C++的书。关于stackoverflow,Lambdas不能用几句简短的话来完全解释。com@SamVarshavchik但是,此处有lambdas的文档,因此:
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