【发布时间】:2016-03-08 15:58:54
【问题描述】:
我正在尝试使用 Fibonacci Heap 和 Priority Queue 编写 Dijkstra 算法。所以我有一个斐波那契堆的类(结构)
template<class T>
struct Fib {
...
};
还有一个函数
template <template <class> class T>
void dijkstra(...) {
T<std::pair<double, int> > heap;
...
}
问题是:
dijkstra<Fib>(...); // OK
dijkstra<std::priority_queue>(...); // doesn't compile
为什么不能编译,如何正确编写?
【问题讨论】:
-
std::priority_queue 本身就是一个模板,您还没有使用它将持有的对象类型实例化模板。
标签: c++ templates priority-queue