struct MyStruct
{
int a;
int b;
char c[10];
};int main()
{
vector<MyStruct> v;
int i;
MyStruct temp;
for(i=0; i<4; i++)
{
temp.a=i*10+i;
temp.b=i*10+i+1;
sprintf(temp.c,"%d", i);
v.push_back(temp);
}
return 0;
}
Vector在添加元素的时候是新分配了sizeof(MyStruct)大小的空间,然后复制过去,还是只存了元素的映射地址?
{
int a;
int b;
char c[10];
};int main()
{
vector<MyStruct> v;
int i;
MyStruct temp;
for(i=0; i<4; i++)
{
temp.a=i*10+i;
temp.b=i*10+i+1;
sprintf(temp.c,"%d", i);
v.push_back(temp);
}
return 0;
}
Vector在添加元素的时候是新分配了sizeof(MyStruct)大小的空间,然后复制过去,还是只存了元素的映射地址?
==你这么定义,意味着存储的是复制品。
定义良好行为的copy constructor 以及operator =