Starter
Starter

Reputation: 93

Can I use std::pair as a key in std::multimap?

I want to use 2 integer numbers as a key in multimap. So I wonder is a structure like

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

possible in C++? When compiling I get the following error message:

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)'

Upvotes: 1

Views: 1472

Answers (1)

PlasmaHH
PlasmaHH

Reputation: 16046

insert takes a pair of key,value, so you need

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

Upvotes: 3

Related Questions