C++ typedef a std::pair and then use the typedef to declare a map

whiteSkar picture whiteSkar · Jan 18, 2016 · Viewed 13k times · Source

Let's say I have this typedef

typedef std::pair<std::string, uint32_t> MyType;

Then, if I also want to create a map using MyType, how do I do it?

I don't want to re-type the two types in the pair like:

map<std::string, uint32_t> myMap;

I want something like:

map<MyType's first type, MyType's second type> myMap;

Is there a way to do it like that using my typedef MyType instead of re-typing the types?

Answer

Tony Delroy picture Tony Delroy · Jan 18, 2016

Simply...

std::map<MyType::first_type, MyType::second_type> myMap;

See http://en.cppreference.com/w/cpp/utility/pair

Sample program at coliru