返回信息流下面这段优先队列程序中的auto和decltype是怎么用的。
1.“auto cmp = []”这个cmp函数后面跟= []是什么意思?
2.decltype(cmp)这里不应该放函数名字cmp么?
3.而且优先队列的名字minHeap(cmp)怎么还带括号(cmp)?
看不懂,求教一下。
vector<pair<int, int>> kSmallestPairs(vector<int>& nums1, vector<int>& nums2, int k)
{
vector<pair<int, int>> v;
if(nums1.empty() || nums2.empty()) return v;
auto cmp = [](const pair<int, int>& a, const pair<int, int>& b) {
return a.first+a.second > b.first+b.second; };
priority_queue<pair<int, int>, vector<pair<int, int>>, decltype(cmp)> minHeap(cmp);
for(int n=0;n<nums1.size();n++)
for(int m=0;m<nums2.size();m++)
minHeap.emplace(make_pair(nums1[n],nums2[m]));
while(minHeap.size() && k--)
{
v.emplace_back(minHeap.top());
minHeap.pop();
}
return v;
}
这是一条镜像帖。来源:北邮人论坛 / cpp / #93116同步于 2016/8/25
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
auto和decltype用法
BYRTQ
2016/8/25镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
1.lambda
2&3.构造minHeap时传入一个函数指针初始化,decltype获取函数指针类型,自己动手查一下priority_queue的接口不就知道了?
3q
【 在 Aghanim 的大作中提到: 】
: 1.lambda
: 2&3.构造minHeap时传入一个函数指针初始化,decltype获取函数指针类型,自己动手查一下priority_queue的接口不就知道了?
[http://en.cppreference.com/w/cpp/language/auto](http://en.cppreference.com/w/cpp/language/auto)
[http://en.cppreference.com/w/cpp/language/decltype](http://en.cppreference.com/w/cpp/language/decltype)
[http://en.cppreference.com/w/cpp/language/lambda](http://en.cppreference.com/w/cpp/language/lambda)