vector<int> vecInt;
int a =1;
vecInt.push_back(a);
int* pA = &vecInt[0];
cout << pA << ":" << *pA << endl;
for (int i = 0; i < 16; i++)
{
vecInt.push_back(i);
}
cout << pA << ":" << *pA << endl;
看上面一段代码,输出结果为:
0025DC8:1
0025DC8:-17891602
当vector扩充容量以后,vector申请新的空间,所有原来的数据复制到新的空间上,旧的空间删除。所以数据指针尽量不要指向经常变动的vector数据之上。
解决办法有2个:
1、直接复制元素实体出去使用。
2、估算vector在工程中的大小,初始化时初始化足够大的大小来存储vector元素。