2017-07-09 13 views
-1

次のコードを実行しようとすると、コンパイルエラー "エラー:テンプレートクラスstd :: unordered_multimap 'unordered_multimap' unordered_multimap m;のテンプレートパラメータリストの引数2での型/値の不一致エラー:intとpairの間でC++でunordered_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'はテンプレートであり、使用可能な型になるには2つのテンプレート引数が必要であることに注意してください。 – VTT

+0

intとpair ...の間に何がありますか?ペアはタイプではありません。 –

答えて

1

std::pairは単独ではタイプではなく、タイプを生成するテンプレートです。あなたが求める2つのテンプレート引数型を指定することによって、 "make"したい型を指定する必要があります。

ご利用の場合は、あなたがそのどこにでも指定する必要がありますので、ペアとして2つのintを持つようにしたいということを示しています。

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

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

すばやく簡単な応答をありがとう! –

+0

@EduardoDeLaGarzaこの投稿があなたの質問に答えたら –

関連する問題