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)大小的空间,然后复制过去,还是只存了元素的映射地址?

解决方案 »

  1.   

    vector<MyStruct> v;
    ==你这么定义,意味着存储的是复制品。
      

  2.   

    当然是重新分配了sizeof(MyStruct)大小的空间,但是你应该给MyStruct
    定义良好行为的copy constructor 以及operator =
      

  3.   

    stl中是重新开辟的,你可以查看到定义中看下实现。如果你想只存引用vector<char*>就可以了。
      

  4.   

    stl保存容器元素。 只存了元素的映射地址? 那还是要new内存来保存元素的指针.