Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.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+中使用优先级队列+;_C++_Priority Queue - Fatal编程技术网

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;