What the make_pair does is to combine the key and the value together into a single object that gets inserted into the map.
The point of a map is to hold some value, and have that value be accessible by some key. So, in that example, you are storing Teams. The Team is the value, or more specifically, a pointer to a Team object. The map allows you fast access to find a Team based on some key, in this case the Code. If you know the Code you can look up the Team in the map.
All make_pair does is create an object of type std::pair that combines the key and the value into a single "thing". The STL map holds those "things". Each time you call insert, you insert one key-value pair. That is why your size is 1, you only inserted 1 thing into the map.
Here is more code that shows you how to access objects in the map:
Code:
std::map<string, Team*> mapTeam;
Team* pTeam1 = new Team(countryName,code);
int code1 = pTeam1->getCode(); // Save the code for later
mapTeam.insert(std::make_pair(pTeam1->getCode(), pTeam1));
// ... insert more teams
size=mapTeam.size();
// ... do things
// Search for the team with the saved code above.
std::map<string, Team*>::iterator iterTeam = mapTeam.find(code1);
// If the returned iterator == the end of the map, that key was not found.
if (iterTeam != mapTeam.end())
{
// The map just holds std::pair<string, Team*> "things".
// So get the one we just found with the saved Code.
std::pair<string, Team*> team1pair = *iterTeam;
// Use the team.
Team* pFoundTeam = team1pair.second;
pFoundTeam->DoWhatever();
}
Hopefully that gives you a better idea of what the map holds and why the make_pair is used. I'd suggest searching for a good book and/or tutorial on these that can explain it better and in more detail than I can.