C++

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!

Terma të lidhur