#include<iostream> #include<map> using namespace std; class MapSort{ public: bool operator()(int size1,int size2){ return size1<size2; } }; template<typename T> void print(T t) { typename T::const_iterator iter = t.begin(); while(iter!=t.end()){ cout << iter->second << iter->first << endl; iter++; } } int main() { multimap<int,char*,MapSort> sizeMap; sizeMap.insert(pair<int,char*>(sizeof(unsigned char),"unsigned char:")); sizeMap.insert(pair<int,char*>(sizeof(char),"char:")); sizeMap.insert(pair<int,char*>(sizeof(unsigned short),"unsigned short:")); sizeMap.insert(pair<int,char*>(sizeof(short),"short:")); sizeMap.insert(pair<int,char*>(sizeof(unsigned int),"unsigned int:")); sizeMap.insert(pair<int,char*>(sizeof(int),"int:")); sizeMap.insert(pair<int,char*>(sizeof(float),"float:")); sizeMap.insert(pair<int,char*>(sizeof(double),"double:")); sizeMap.insert(pair<int,char*>(sizeof(unsigned long),"unsigned long:")); sizeMap.insert(pair<int,char*>(sizeof(long),"long:")); sizeMap.insert(pair<int,char*>(sizeof(long long),"long long:")); sizeMap.insert(pair<int,char*>(sizeof(string)," string:")); print(sizeMap); } gcc: unsigned char:1 char:1 unsigned short:2 short:2 unsigned int:4 int:4 float:4 unsigned long:4 long:4 string:4 double:8 long long:8 vs2008,xp: unsigned char:1 char:1 unsigned short:2 short:2 unsigned int:4 int:4 float:4 unsigned long:4 long:4 double:8 long long:8 string:32