void PrintVectorAddr(vector<int>& v) {
for (size_t i = 0; i < v.size(); i++) {
cout << &(v[i]) << endl;
}
cout << "------" << endl;
vector<int> v;
int a = 1;
v.push_back(a);
PrintVectorAddr(v);
int b = 2;
v.push_back(b);
PrintVectorAddr(v);
for (size_t i = 0; i < v.size(); i++) {
cout << &(v[i]) << endl;
}
cout << "------" << endl;
}
vector<int> v;
int a = 1;
v.push_back(a);
PrintVectorAddr(v);
int b = 2;
v.push_back(b);
PrintVectorAddr(v);
}
获取了vecotr里的元素的地址后,如果vector改变了大小,里面元素的地址可能会发生变化。导致指针失效。
可以改为记录vector里的下标号,即使vector扩容下标也不会变。
或者用list。