C++ 在C+中使用优先级队列+;
我试图写一个简单的函数,返回等待一辆车到达停车场门口的时间。为此,我使用了一个优先级队列,而我的代码似乎无法编译 下面是函数C++ 在C+中使用优先级队列+;,c++,priority-queue,C++,Priority Queue,我试图写一个简单的函数,返回等待一辆车到达停车场门口的时间。为此,我使用了一个优先级队列,而我的代码似乎无法编译 下面是函数 std::time_t waitingTime(std::vector<car* > v){ //std::unordered_map<std::time_t, std::string> lookup; std::vector<std::time_t> timeVector; std::priority_queu
std::time_t waitingTime(std::vector<car* > v){
//std::unordered_map<std::time_t, std::string> lookup;
std::vector<std::time_t> timeVector;
std::priority_queue<std::time_t, timeVector, std::greater<std::time_t>> Q;
for(auto it = v.begin(); it != v.end(); it++){
car* c = *it;
timeVector.push_back(c->exit);
//lookup[c->exit] = c->id;
}
for(std::time_t t :timeVector){
Q.push(t);
}
const std::time_t t = Q.top();
Q.pop();
return t;
};
std::time\u t waitingTime(std::vector v){
//std::无序地图查找;
向量时间向量;
std::优先级队列Q;
对于(自动it=v.begin();it!=v.end();it++){
car*c=*it;
时间向量。推回(c->退出);
//查找[c->exit]=c->id;
}
用于(标准时间向量){
Q.push(t);
}
常数std::time_t=Q.top();
Q.pop();
返回t;
};
这是我的司机代码
std::time_t now = time(0);
car* c1 = new car("A", now+2, now+4);
car* c2 = new car("A", now, now+3);
car* c3 = new car("A", now, now+1);
std::vector<car* > v;
v.push_back(c1);
v.push_back(c2);
v.push_back(c3);
std::time_t t = waitingTime(v);
std::cout<<t<<std::endl;
std::time\u t now=time(0);
car*c1=新车(“A”,现在+2,现在+4);
car*c2=新车(“A”,现在,现在+3);
car*c3=新车(“A”,现在,现在+1);
std::向量v;
v、 推回(c1);
v、 推回(c2);
v、 推回(c3);
std::time\u t t=等待时间(v);
std::cout您需要提供类型作为模板的参数,而不是对象。队列的声明应如下所示:
std::priority_queue<std::time_t> queue;
std::优先级队列;
注意,我没有指定其他模板参数-默认值正是我所需要的。您知道模板参数是什么吗?如果是,请重新阅读错误消息。如果没有:
std::priority_queue<std::time_t> queue;