priority_queue中第一个模板参数的用途是什么
What is the use of first template parameter in priority_queue
对于std::priority_queue,我假设第一个模板参数指定了类型,第二个应该是该类型的容器。示例:
priority_queue<int, vector<int>> someQueue;
然而,以下代码编译后似乎运行良好:
class SomeClass
{
};
int main()
{
priority_queue <SomeClass, vector<int>> pq;
int x = 9;
pq.push(x);
int t = pq.top();
cout << t << endl;
pq.pop();
return 0;
}
上述代码是否无效(即给出UB)?
如果有效-优先级队列中使用的第一个模板参数(即someClass
)是什么。
通过LWG第2566期:在杰克逊维尔的工作文件中新投票
容器适配器的第一个模板参数
T
应表示与CCD_ 3类型相同。
写入std::priority_queue<SomeClass, std::vector<int>>
相应地导致未定义的行为。
在C++11规范中,关于std::priority_queue
的部分是§23.6.4。在它中,第一个模板参数只是用于容器的默认类型,而不是其他类型。
实际值类型取自容器。
该类被声明为
template<
class T,
class Container = std::vector<T>,
class Compare = std::less<typename Container::value_type>
> class priority_queue;
[取自本参考文献]
该声明显示了第一个模板参数的使用方式、时间和位置。
相关文章:
- 通过引用函数传递指针参数是什么意思?
- FFT函数的参数是什么意思
- v8 源代码中 ArrayMap 函数的回调 fn 参数是什么?
- 这个奇怪的函数参数是什么?
- 这个函数的参数是什么?
- OpenGL 调试 错误回调函数的 ID 参数是什么?
- 操作员[]作为成员函数的正确模板参数/参数是什么?
- 这个 lambda 的参数是什么类型?
- 函数upper_bound的参数是什么
- mpi_scatterv中的显示参数是什么?
- 这些额外的参数是什么意思
- ON_LBN_SELCHANGE的参数是什么
- 默认参数模板与可变参数模板:最后一个模板参数是什么
- D3DX11CompileFromFile中的第四个参数是什么
- 在 JavaCV 中传递给 cvFindContours() 的参数是什么?
- 这个向量类中的参数是什么
- fcntl() 中的第三个参数是什么
- 参数是什么意思
- std::vector.resize()中的第二个参数是什么意思
- 此签名中的第二个参数是什么意思