Articles

Array index out of bounds-C++ Forum

vektorer har mange gode ting å gå for dem. Men c++ – arrayer, hvis du bruker en standard håndhevet kompilering, MÅ ha en kjent størrelse ved kompileringstid (kan ikke være en variabel, bare en kompileringstid kjent verdi som enum, const int, literal number, etc.) Du bør alltid vite størrelsen på matrisen din og aldri gå tom for grenser på den på grunn av dette. Så mens du bør favorisere vektorer generelt, vil du noen ganger arve kode som har arrays, eller må håndtere En C-fil i samlingen din eller lignende, så du trenger å vite det grunnleggende. Vanligvis størrelsen er en enum eller const sted med et navn som du kan bruke når looping å holde det trygt. Hvis du bruker arrays uansett grunn, bruk denne ideen, og du vil unngå de fleste out of bounds problemer. De andre problemene kan også skje på vektorer-de der du har beregnet indeksen og goofed den opp, men vektorer gir deg verktøyene for å sjekke dette mens arrays har færre muligheter for å håndtere feil.
c++ er et språk med høy ytelse. Det gjør ikke unødvendig arbeid bak kulissene generelt, du må FÅ det til å gjøre det hvis du vil ha det. Så hvis du vil ha grensekontroll, trenger du kode for å gjøre det. du kan også gå ut av grensene på en vektor, forresten.
vektor <int > duh = {1,2,3};
cout << duh; / / utenfor grensene. crash, mest sannsynlig.
det er ikke at vector sjekker grensene eller’ tryggere ‘ når du rotet opp. Dens at den har sin egen klarte størrelse variabel så rote opp bør være vanskeligere, hvis du skriver koden nøye.