c++ map为什么 明明定义的是string ,item.first却是unsigned int

std::map > map;
std::vector v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
map["onesssss"] = v;

for (const auto& temp:map)
{
    //cout << temp.first<< endl;
    printf("%s", temp.first);
    for (auto& v : temp.second){
        cout <<v<< endl;
    }
}

断点调试这边temp.first的值是onessss,类型却是unsigned int,输出值是8[T1。注释掉的那行代码也会报错。小白求大神解答啊!

item.first是一个指针,所以是unsigned int

#if 1
#include
#include
#include
#include
using namespace std;

int main()
{
vector v;
map m;
v.push_back(1);
v.push_back(2);
v.push_back(3);

m["sdfsf"] = *v.begin();
map<char*, int>::iterator iter = m.begin();
for (; iter != m.end(); ++iter)
{
    cout << iter->first << " " << iter->second << endl;
}
return 0;

}
#endif

这是我的代码.不知道你的代码没有粘贴完全还是...