用Deque实例化Priority_queue不会与矢量进行编译.这是为什么
Instantiating priority_queue with deque does not compile - with vector it does. Why is that?
在以下程序中,为什么使用deque
的构造失败,而vector
的构造则可以?
均提供priority_queue
预期的功能和随机访问迭代器。我看不到原因。
我对C 98,C 11和C 进行了测试:请参阅测试程序
#include <vector>
#include <deque>
#include <queue>
using namespace std;
int main()
{
deque<int> d;
priority_queue<int> q(d.begin(), d.end());
vector<int> v;
priority_queue<int> q1(less<int>(), v); //compiles
deque<int> d1;
priority_queue<int> q2(less<int>(), d1); //does not compile
return 0;
}
您错过了将deque<int>
指定为priority_queue
的模板参数:
deque<int> d1;
priority_queue<int,deque<int>> q2(less<int>(), d1);
// ^^^^^^^^^^
请参阅此处的工作示例。
请参阅std::priority_queue
的参考文档。std::vector
被视为模板的默认类型参数:
template< class T, class Container = std::vector<T>, // <<<<<<<<<<<<<<<< class Compare = std::less<typename Container::value_type> > class priority_queue;
这就是为什么其他版本编译的原因。
相关文章:
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 使用简单类型列表实现的指数编译时间.为什么
- 为什么即使使用-cudart-static进行编译,库用户仍然需要链接到cuda运行时
- 为什么使用__LINE_的代码在发布模式下在MSVC下编译,而不是在调试模式下
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- 为什么 gcc 编译这个而 msvc 没有
- 非类型指针和引用模板参数,以及在编译时如何/为什么解析它们.c++
- 编译 llvm 3.1 时,为什么会出现错误:在">"标记之前预期主表达式
- 为什么我的 EnumWindowProc 不能用 C 语言编译?
- 为什么我的 BaseClass:Method 代码编译(带有单冒号)?
- 为什么下面的模板化类成员函数无法编译?
- 为什么通过指针编译时不能分配 const 初始化
- 如果我的手机是 ARMv8,为什么 Android Studio 会C++编译为 ARMv7?
- 为什么传递非静态成员函数会导致编译错误?
- 为什么 std::make_shared 无法编译带有已删除运算符 new 的类型?
- 为什么使用EnTT进程无法编译
- 为什么许多项目不提供预编译的二进制文件?
- 包含 std::forward 会产生错误,但其省略会编译.为什么
- 我相信 -O2 标志导致我不得不在每台机器上重新编译.为什么
- clang 在 Coliru 中编译此代码段,但不在编译器资源管理器中编译.为什么