@yungdupa: jeżeli operujesz na indeksach, a nie na iteratorach, czy na pointerach/referencjach, to tego możesz używać w pełni naturalnie.
Dostęp po indeksie, bez tymczasowego chowania pointera do zmiennej w międzyczas zmiany składu kontenera, zawsze będzie dobrze działać, bo zawsze będziesz wyciągać aktualny pointer/referencję, o ile nie próbujesz uzyskać dostępu poza ostatni element, lub do nieistniejącego elementu.
Patrząc na std::vector masz rozróżnione pojęcie (warstwy) na zarezerwowaną pamięć w systemie operacyjnym (capacity), a wysokopoziomowe zliczanie elementów jako wynik wszystkich operacji modyfikacji składu obiektów kontenera (size) za pomocą publicznego API (metod/funkcji) kontenera.
Przy czym capacity jest zarządzane automatycznie przez bibliotekę STL i z capacity wiąże się operacja realloc, gdy zmienia się liczba składowych kontenera.
#wojna #rosja #ukraina ale wiecie że to hipokryzja i fiolek jam popieracie jak Ukraińcy zabijają Rosjan i was to cieszy ale oburza jak jest na odwrót? A wiecie co ukry krzyczały jak strzelali w tył głowy?
Dostęp po indeksie, bez tymczasowego chowania pointera do zmiennej w międzyczas zmiany składu kontenera, zawsze będzie dobrze działać, bo zawsze będziesz wyciągać aktualny pointer/referencję, o ile nie próbujesz uzyskać dostępu poza ostatni element, lub do nieistniejącego elementu.
Jeżeli chcesz nabyć wyczucia jak działa
std::vector
, to warto wiedzieć, jak wyglądają koncepcje:↘️
malloc
/calloc
,realloc
,free
,↘️ .erease,
↘️ czym jest capacity,
↘️
resize
vs.reserve
: https://stackoverflow.com/a/7397849/12755962.Patrząc na
std::vector
masz rozróżnione pojęcie (warstwy) na zarezerwowaną pamięć w systemie operacyjnym (capacity), a wysokopoziomowe zliczanie elementów jako wynik wszystkich operacji modyfikacji składu obiektów kontenera (size) za pomocą publicznego API (metod/funkcji) kontenera.W momencie, gdy zmienia się rezerwacja w systemie operacyjnym, to istnieje szansa, że zmieni się też pointer/referencja obiektów, stąd też pojęcie inwalidacji referencji/pointera:
↘️ https://en.cppreference.com/w/cpp/container#Iterator_invalidation
Przy czym
capacity
jest zarządzane automatycznie przez bibliotekę STL i zcapacity
wiąże się operacjarealloc
, gdy zmienia się liczba składowych kontenera.