我想知道一种简单的方法,以获得在C数据结构 ++C++映射到最小堆
我尝试这样一个(最小堆地图+):
struct Comp
{
bool operator()(const pair<int,int>& y , const pair<int,int>& z)
{
return (y.second < z.second);
}
};
priority_queue< pair<int,int> , map<int,int> , Comp > p;
现在我面对的问题因为它在priority_queue
中,我们不能简单地初始化,就像我们用maps
进行初始化一样。
插入元素的唯一方法是
p.push(make_pair(value1,value2));
我也试图用简单的地图,就不必使用它与priority_queue
,但再次问题是,当我试图找到使用min_element
最小元素,它返回的值,而不是这也是必需的关键。
请建议以最快的方式执行问题。 我也相信有可能超出我的知识。
的'priority_queue'“必须满足SequenceContainer的要求,其必须迭代此外满足RandomAccessIterator的要求,它必须提供与通常的语义如下功能的第二个参数:前()的push_back)( pop_back()“--http://en.cppreference.com/w/cpp/container/priority_queue 。 'std :: map'不符合这些要求。 –
你为什么认为你想要一张地图+分钟堆?这是一个[X,Y问题](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) –
@Ryuzaki你想要一种方法来改变一个元素的值( '对')在优先级队列中?你想要一种方法能够将优先级队列中的元素编入索引来更改它? –
Shubham