Array index out of bounds-Forum C++
wektory mają wiele dobrych rzeczy do zrobienia.
ale tablice C++, jeśli używają standardowej kompilacji wymuszonej, muszą mieć znany rozmiar w czasie kompilacji (nie może być zmienna, tylko znana wartość w czasie kompilacji, taka jak enum, const int, literal number, itp.) Powinieneś zawsze znać rozmiar swojej tablicy i nigdy nie zabraknie na niej ograniczeń z tego powodu. Tak więc, chociaż powinieneś faworyzować wektory w ogóle, czasami będziesz dziedziczył kod, który ma tablice, lub będziesz musiał radzić sobie z plikiem C w swojej kompilacji, lub tym podobne, więc musisz znać podstawy. Zazwyczaj rozmiar jest enum lub const gdzieś z nazwą, która może być używana podczas zapętlania, aby zapewnić bezpieczeństwo. Jeśli używasz tablic z jakiegokolwiek powodu, użyj tego pomysłu, a unikniesz większości problemów poza granicami. Inne problemy mogą się zdarzyć również na wektorach – tych, w których obliczyłeś indeks I go wygłupiłeś, ale wektory dają Ci narzędzia do sprawdzenia tego, podczas gdy tablice mają mniej opcji obsługi błędów.
c++ jest językiem o wysokiej wydajności. Nie wykonuje niepotrzebnej pracy za kulisami w ogóle, musisz to zrobić, jeśli chcesz. Więc jeśli chcesz sprawdzić granice, potrzebujesz kodu, aby to zrobić. przy okazji, możesz też wyjść poza granice wektora.
vector<int> duh = {1,2,3};
cout<< duh; //out of bounds. najprawdopodobniej wypadek.
to nie jest to, że wektor sprawdza granice lub „bezpieczniej”, gdy się nawali. To, że ma własną zmienną wielkości zarządzanej, więc bałagan powinien być trudniejszy, jeśli uważnie piszesz swój kod.
Leave a Reply