struct struct1
{
    vector<unsigned> vec1;
};

void main()
{
    vector<struct1> vecStruct1;
    struct1 obj1Struct1;
    struct1 obj2Struct1;
    vecStruct1.push_back(obj1Struct1);
    vecStruct1.push_back(obj2Struct1);
}


现在,如果我调整对象vec1struct1vecStruct1[0]的大小,那么vecStruct1也会重新调整大小的情况,即是否会导致在vecStruct1中重新分配,即&vecStruct[0]&vecStruct[1]不会调整vec1vecStruct1[0]大小后是否有所不同?

最佳答案

不,vector将其元素存储在堆中,而不是存储在结构本身内部,因此,vector本身在调整大小时永远不会增长,增长的是vector指向的数据缓冲区。

09-06 12:38