各种根本数据类型的长度

各种基本数据类型的长度
#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