Articles

Array index out of bounds-C++ Forum

vektoreilla on paljon hyvää menoa.
mutta c++ – matriiseilla, jos käytetään standardia pakotettu kääntää, on oltava tunnettu koko käännösaikaan(ei voi olla muuttuja, vain käännösajan tunnettu arvo, kuten enum, konst int, kirjaimellinen luku jne.) Sinun pitäisi aina tietää koko array ja koskaan loppuu rajoja sen vuoksi. Joten vaikka sinun pitäisi suosia vektoreita yleensä, voit joskus periä koodia, joka on taulukoita, tai täytyy käsitellä C-tiedoston kokoelma, tai vastaavaa, joten sinun täytyy tietää perusasiat. Tyypillisesti koko on enum tai const jonnekin nimi, jota voit käyttää, kun silmukointi pitää sen turvassa. Jos käytät taulukoita jostain syystä, käytä tätä ajatusta ja vältät useimmat Out of bounds kysymyksiä. Vektoreilla voi tapahtua myös muita ongelmia – niitä, joissa laskit indeksin ja mokasit sen, mutta vektorit antavat sinulle työkalut tämän tarkistamiseen, kun taas matriiseilla on vähemmän vaihtoehtoja vikojen käsittelyyn.
c++ on korkean suorituskyvyn kieli. Se ei tee turhaa työtä kulissien takana yleensä, se pitää tehdä, jos haluaa. Joten jos haluat bounds tarkistaa, tarvitset koodin tehdä se. vektorillakin voi mennä rajojen ulkopuolelle.
vector <int> duh = {1,2,3};
kout << duh; //out of bounds. todennäköisesti kolari.
sen ei vektori ole rajojen tarkistaminen tai ’turvallisempi’, kun sotket. Sen, että se on oma hallittu koko muuttuja niin messing up pitäisi olla vaikeampaa, jos kirjoitat koodin huolellisesti.