例如,如果我做这样的事情:
vector<int> myvector;
myvector.push_back(100);
int * ptr = &(myvector[0]);
myvector.clear();
myvector.push_back(10);
ptr仍然有效吗?还是现在可能指向垃圾?
最佳答案
23.2.3§4说:
由于没有“取消无效”之类的内容,因此在ptr
之后使用clear
会导致未定义的行为。
附带说明,不需要&(myvector[0])
中的括号。在C++中,后缀运算符始终比前缀运算符具有更高的优先级,因此编写&myvector[0]
很好。
关于c++ - vector 的第一个元素的地址是否固定?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9046946/