HII我知道矢量分配的连续固定的内存时,它需要如果它不能够适应它,它会alllocate新的内存和旧的值复制到其中并删除旧内存的push_back一些items.And.如果是下面的代码是如何工作的情况下
#include<iostream>
#include<vector>
using namespace std;
class Test
{
public :
int val;
Test()
{
val=0;
}
};
int main()
{
vector<Test>vec;
Test t[10];
for (int i=0;i<5;i++)
vec.push_back(t[i]);
cout<<vec.capacity()<<endl; //printing 8
Test* obj=&vec[2];
obj->val=2;
cout<<obj<<endl;
for (int i=0;i<5;i++) //Adding 5 elements more
vec.push_back(t[i]);
Test* obk=&vec[2];
cout<<obk->val<<endl;
cout<<obj->val<<endl;
cout<<obj<<endl;
cout<<obk<<endl;
}
Run Code Online (Sandbox Code Playgroud)
在这里,如果你看到obj正在使用vec [2]的指针,我的机器中的值即将到来0x8bcb048.然后我又插入了5个项目,因此vector将分配新的内存.现在,如果我从向量[2]中获取obk它会变得不同地址0x8bcb070.但如果我试图在obj的帮助下接受我没有给出任何问题.任何理由?
c++ ×1