Articles

Array index out of bounds-C++ Forum

i vettori hanno un sacco di cose buone per loro.
Ma gli array c++, se si utilizza una compilazione forzata standard, DEVONO avere una dimensione nota in fase di compilazione (non può essere una variabile, solo un valore noto in fase di compilazione come enum, const int, literal number, ecc.) Dovresti sempre conoscere la dimensione del tuo array e non esaurire mai i limiti a causa di questo. Quindi, mentre dovresti favorire i vettori in generale, a volte erediterai il codice che ha array, o dovrai avere a che fare con un file C nella tua compilation, o simili, quindi devi conoscere le basi. In genere la dimensione è un enum o const da qualche parte con un nome che è possibile utilizzare durante il loop per tenerlo al sicuro. Se usi gli array per qualsiasi motivo, usa questa idea e eviterai la maggior parte dei problemi fuori dai limiti. Gli altri problemi possono accadere anche sui vettori-quelli in cui hai calcolato l’indice e lo hai ingannato, ma i vettori ti danno gli strumenti per controllarlo mentre gli array hanno meno opzioni per gestire i bug.
c++ è un linguaggio ad alte prestazioni. Non fa un lavoro inutile dietro le quinte in generale, devi farlo fare se lo vuoi. Quindi se vuoi controllare i limiti, hai bisogno di codice per farlo. a proposito, puoi anche andare fuori dai limiti su un vettore.
vector<int>duh = {1,2,3};
cout<< duh; //fuori dai limiti. incidente, molto probabilmente.
non è che il vettore stia controllando i limiti o “più sicuro” quando si incasina. È che ha una propria variabile di dimensione gestita, quindi incasinare dovrebbe essere più difficile, se stai scrivendo attentamente il tuo codice.