先上代码如下:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int a[6] = { 1,2,3,4,5,6 };
int *j;
vector<int> b(a, a + 4);
vector<int*>c;
vector<int>d;
c.reserve(6);
d.reserve(6);//改变当前vecotr所分配空间的大小
for (int i = 0; i < 6; i++)
{
int m = *(a + i);
j = &m;
c.push_back(j);
d.push_back(m);
}
cout << "c output" << endl;
for (int i = 0; i < 6; i++)
cout << *c[i] << " ";
cout << endl <<"d output" << endl;
for (int i = 0; i < 6; i++)
cout << d[i] << " ";
}
输出如下:
可以发现当vector类型为指针时,由于指针所指向变量改变了,导致之前加入的元素随着后续元素的加入而发生了改变。
有时候指针变量被typeof成了看起来不像指针变量,如
typeof int* point
vector<point>c;
一旦这样就不容易发生这个问题,从而导致bug,给各位提个醒!