C++ c++;与匹配类型相混淆

C++ c++;与匹配类型相混淆,c++,types,C++,Types,我不明白优先级队列的类型如何允许呼叫推送?我不知道这些类型是如何匹配的,也不知道为什么要将这些参数传递给push 代码: intv,S;cin>>V>>S; 向量销售(V); 对于(int i=0;i>c; 销售[i].(c); 对于(int&s:出售[i]){ cin>>s;s--; } } 常量int64\u t INF=1e12; 张量石区({S,V},INF); priority_queue不确定tensor类,但我猜它创建了一个填充int64_t的2D数组 stone_dist[{s,

我不明白优先级队列的类型如何允许呼叫推送?我不知道这些类型是如何匹配的,也不知道为什么要将这些参数传递给push

代码:

intv,S;cin>>V>>S;
向量销售(V);
对于(int i=0;i>c;
销售[i].(c);
对于(int&s:出售[i]){
cin>>s;s--;
}
}
常量int64\u t INF=1e12;
张量石区({S,V},INF);

priority_queue不确定tensor类,但我猜它创建了一个填充int64_t的2D数组

stone_dist[{s,i}] = 0
意味着用值0初始化数组中的元素s,i,同时返回0,这是一个int64\t

{s,i}
返回一对

相当于

{0, {s,i}}

这是一个pair,它是优先级队列中使用的元素(=优先级队列定义的第一部分:)

对实际代码进行一些假设,问题归结为此代码的工作方式:

using Foo = std::pair<int, std::pair<int, int>>;
Foo bar{ 0, {1, 2} };

因为
0
const int&
{1,2}的有效初始值设定项,所以初始化可以工作
const std::pair&
的有效初始值设定项。对后者的解释与上面解释的相同。

这是一个漫长而复杂的故事。请先阅读。我不需要深入了解,我只想知道这将简化为该类型,并等于该类型。这将改进发布a的问题选择取决于“张量”是什么,例如,在开始
priority\u队列的行上也有语法错误
{0, {s,i}}
using Foo = std::pair<int, std::pair<int, int>>;
Foo bar{ 0, {1, 2} };
constexpr pair( const T1& x, const T2& y );