Articles

Array index out of bounds – C ++ Forum

Vektoren haben eine Menge guter Sachen für sie.
Aber c ++ – Arrays MÜSSEN, wenn Sie eine standardmäßige erzwungene Kompilierung verwenden, zur Kompilierungszeit eine bekannte Größe haben (kann keine Variable sein, nur ein zur Kompilierungszeit bekannter Wert wie enum, const int, Literalzahl usw.) Sie sollten immer die Größe Ihres Arrays kennen und aus diesem Grund niemals die Grenzen überschreiten. Während Sie also Vektoren im Allgemeinen bevorzugen sollten, erben Sie manchmal Code mit Arrays oder müssen sich mit einer C-Datei in Ihrer Kompilierung oder ähnlichem befassen, sodass Sie die Grundlagen kennen müssen. Normalerweise ist die Größe eine enum oder const irgendwo mit einem Namen, den Sie beim Schleifen verwenden können, um die Sicherheit zu gewährleisten. Wenn Sie Arrays aus irgendeinem Grund verwenden, verwenden Sie diese Idee und Sie werden die meisten Probleme außerhalb der Grenzen vermeiden. Die anderen Probleme können auch bei Vektoren auftreten – diejenigen, bei denen Sie den Index berechnet und vermasselt haben, aber Vektoren geben Ihnen die Werkzeuge, um dies zu überprüfen, während Arrays weniger Optionen für die Behandlung von Fehlern haben.
c++ ist eine Hochleistungssprache. Es macht keine unnötige Arbeit hinter den Kulissen im Allgemeinen, Sie müssen es tun, wenn Sie es wollen. Wenn Sie also die Überprüfung der Grenzen wünschen, benötigen Sie dafür Code. sie können übrigens auch für einen Vektor außerhalb der Grenzen gehen.
Vektor <int> duh = {1,2,3};
cout << duh; //außerhalb der Grenzen. absturz, höchstwahrscheinlich.
Es ist nicht so, dass vector die Grenzen überprüft oder ’sicherer‘ ist, wenn Sie es vermasseln. Es ist, dass es eine eigene verwaltete Größenvariable hat, so dass das Durcheinander schwieriger sein sollte, wenn Sie Ihren Code sorgfältig schreiben.