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。
本文深入探讨了C++中使用vector容器时,元素地址随容器大小改变而变化的问题,并提出有效解决方案,包括记录下标、使用list等方法,确保程序稳定性和可靠性。
1万+

被折叠的 条评论
为什么被折叠?



