Iterator invalidation
Në shqip: Pavlefshmëria e iteratorëve
ShpjegimiSQ
Kur shton ose heq elemente nga një vector, iteratorët, pointer-ët dhe referencat që kishe drejt elementeve të tij mund të bëhen të pavlefshëm — sepse vector-i mund të jetë zhvendosur diku tjetër në memorie. Po i përdore, ke sjellje të papërcaktuar.
EnglishEN
When you add or remove items from a vector, the iterators, pointers and references you had to its items can become invalid — because the vector may have moved somewhere else in memory. Using them is undefined behaviour.
Si ta mendosh
Si ta mbash mend vendin e një shoku në kinema, por gjithë sallës i ndërrojnë vendet — shkon te karrigia dhe ulet dikush tjetër.
Lexoje në anglisht
Like remembering your friend's cinema seat, but then everyone gets moved — you go to the seat and someone else is sitting there.
Shembull kodicpp
std::vector<int> v = {1, 2, 3};
int* p = &v[0];
v.push_back(4); // mund ta zhvendosë vector-in
// *p — rrezik!