我试图写一个简单的函数,返回时间等待到达停车场门口的汽车。我为此目的使用了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_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_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;
这是编译错误。
38: error: template argument for template type parameter must be a type
std::priority_queue<std::time_t, timeVector, std::greater<std::time_t>> Q;
答案 0 :(得分:0)
您需要提供类型作为模板的参数,而不是对象。您的队列声明应如下所示:
std::priority_queue<std::time_t> queue;
注意,我没有指定其他模板参数 - 默认正是我需要的。