2012-04-23 15 views
1

マルチマップでキーとして2つの整数を使いたいです。だから私は、構造のようなstd :: multimapでstd :: pairをキーとして使用できますか?

std::multimap<std::pair<int, int>, MyClass> M; 
M.insert(std::pair<int,int>(X1,Y1), MyClassObject); 

C++で可能ですか?コンパイルするとき、私は、次のエラーメッセージが表示されます。

C:\1\1-build-desktop-Qt_4_7_4_for_Desktop_-_MinGW_4_4__Qt_SDK_________\..\main.cpp:199: 
error: no matching function for 
call to 'std::multimap<std::pair<int, int>, MyClass, std::less<std::pair<int, int> >, 
std::allocator<std::pair<const std::pair<int, int>, MyClass> > >::insert(std::pair<int, int>, 
MyClass)' 
+1

を必要とするので、あなたはあなたのstd ::ペアタイプのためのコンパレータを実装する必要があると思います。 – Nick

+0

@ニック:どうしてですか?デフォルトのものは大抵の場合は大丈夫ですか、彼の場合もそうでしょうか? – PlasmaHH

+1

@Nick 'std :: pair'はすでに比較可能です – Potatoswatter

答えて

3

インサートは、値、キーのペアを取り、あなたが

M.insert(std::make_pair(std::make_pair(X1,Y1),MyClassObject)); 
+0

ありがとうございました!!! – Starter

関連する問題