2017-07-09 30 views
-1

當試圖運行下面的代碼,我得到這個編譯錯誤 「錯誤:在模板參數列表中的參數2類型/值不匹配'模板類std :: unordered_multimap'unordered_multimap m;」如何在int和pair之間在C++中創建一個unordered_multimap?

有沒有什麼辦法可以設置multimap?如果不是我該怎麼做我想做的事?謝謝!

#include <iostream> 
#include <algorithm> 
#include <string.h> 
#include <vector> 
#include <map> 
#include <unordered_map> 
#include <utility> 

using namespace std; 

int main(){ 

int n = 100; 
unordered_multimap<int, pair> m; //Error is in this line 

for (int a = 0; a <= n; ++a) 
    for (int b = 0; b <= n; ++b) 
    { 
     int result = (a*a*a) + (b*b*b); 
     pair<int,int> p = {a,b}; 
     pair<int,pair> p2 = {result,p}; 
     m.insert(p2); 
    } 
return 0; 
} 
+1

'unordered_multimap >米;'請注意,'pair'是一個模板,需要兩個模板參數才能成爲可用類型。 – VTT

+0

int和一對之間是什麼?一對不是一個類型。 –

回答

1

A std::pair本身不是一種類型,它是一個「生成」類型的模板。您需要通過指定它要求的2個模板參數類型來指定要「製作」的類型。

你的使用情況表明,你想有兩個整數爲一對,所以你應該指定一個無處不在:

unordered_multimap<int, pair<int, int>> m; 

pair<int,pair<int, int>> p2 = {result,p}; 
+0

感謝您的快速和直接的反應! –

+0

@EduardoDeLaGarza接受,如果你覺得這個職位回答你的問題 –

相關問題