c++ - Is the address of the first element of a vector fixed? -



c++ - Is the address of the first element of a vector fixed? -

for illustration if this:

vector<int> myvector; myvector.push_back(100); int * ptr = &(myvector[0]); myvector.clear(); myvector.push_back(10);

will ptr still valid? or pointing garbage?

23.2.3 §4 says:

a.clear() [...] invalidates references, pointers, , iterators referring elements of a , may invalidate past-the-end iterator.

since there no such thing "un-invalidation", using ptr after clear results in undefined behavior.

on side note, parenthesis in &(myvector[0]) not needed. postfix operators have higher precedence prefix operators in c++, writing &myvector[0] fine.

c++ pointers stl vector

Comments

Popular posts from this blog

How do I check if an insert was successful with MySQLdb in Python? -

delphi - blogger via idHTTP : error 400 bad request -

postgresql - ERROR: operator is not unique: unknown + unknown -