声明一个结构体:
struct node
{
int age;
string name;
double score;
};
这里没给默认值
那么直接输出会怎么样
node temp;
cout<<temp.age<<" "<<temp.name<<" "<<temp.score;
结果
4199040 1.33485e-306
Process returned 0 (0x0) execution time : 0.258 s
Press any key to continue.
除去中间两个空格可知,如果成员没有默认值直接输出的话,就跟声明普通变量直接输出一样,int,double都是乱的,string为空的,总之都是不合理的
而如果结构体作为map的value,不赋值会出现什么?
map<int,node> m;
m[1];
cout<<m[1].age<<" "<<m[1].name<<" "<<m[1].score;
这里直接声明创建一个"1"的键,没有显式赋值
结果
0 0
Process returned 0 (0x0) execution time : 0.377 s
Press any key to continue.
除去中间两个空格可知,int,double都是默认值0,string是空字符串
结构体作为value,没有赋值,也没有在声明成员的时候给默认值,也会有值
其实并不是没有赋值
map里的元素都是对组,只有成对的才能插进去,而m[1]不是只声明了一个key,系统隐式地给value赋了默认值,然后才会成为一个对组,从而存进去map里的