【发布时间】:2023-04-09 22:53:02
【问题描述】:
我正在做一个 leetcode 问题,我需要返回一个二维结果数组。但是我为此使用了优先级队列,并且无法将元素移动到二维数组。我无法为此提出语法。 当我尝试将这对推入二维数组时,push_back() 不起作用。 这是problem的链接
代码-
class Solution {
public:
vector<vector<int>> kClosest(vector<vector<int>>& p, int k) {
vector<vector<int>>closest;
//pairp;
priority_queue<pair<int,pair<int,int>>>heap;
for(int i = 0; i < p.size(); i++){
heap.push({p[i][0] * p[i][0] + p[i][1]*p[i][1],
{p[i][0],p[i][1]}});
}
if(heap.size() > k){
heap.pop();
}
while(heap.size() > 0){
pair<int,int>ptr = heap.top().second;
//want to add the statement to copy elements to closest[][] here
heap.pop();
}
return closest;
}
};
添加时出现错误消息,最接近.push_back(ptr);
第 22 行:字符 21:错误:没有匹配的成员函数调用“push_back”
closest.push_back(ptr);
~~~~~~~~^~~~~~~~~
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_vector.h:1184:7 : 笔记:
候选函数不可行:没有从 'pair
【问题讨论】:
-
closest是一个 int 向量的向量。您不能将pair<int,int>推入其中,因为它需要vector<int>。也许你想把你的对转换成一个向量,也许你想要别的东西;你的问题还不是很清楚。如果heap包含元素{2, {1,0}},您希望closest在插入该元素后看起来像什么?
标签: c++ arrays priority-queue std-pair