我想知道一種簡單的方法,以獲得在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