Bevor Sie weiter lesen, müssen Sie Folgendes abrufen. Dieser Index wird verwendet, um das Element des Vektors zu verweisen. Jeder Index bezieht sich auf ein bestimmtes Element (Wert). Die Indexzählung beginnt von 0 und endet bei Vektorisierung - 1. Wenn also ein Vektor 10 Elemente hat, befindet sich das erste Element bei Index 0 und das zehnte Element befindet sich bei Index 9. Verwenden Sie den Index 10 im Vektor zum Lesen oder Ändern des Wertes eines Elements am Index 10, der nicht existiert, sollte eine Fehlermeldung außerhalb des Bereichs ausgeben. Mit dem G ++ - Compiler, solange ein Vektor definiert wurde (für die Elemente zugewiesene Speicher, auch wenn er Standardelemente ist), wenn ein Index außerhalb des Bereichs verwendet wird, wird der Standardwert des Vektorelementtyps oder eines anderen Der Wert des Typs wird zurückgegeben (oder soll dort geändert werden).
Außerhalb der Reichweite Illustration
Betrachten Sie die folgende Tabelle:
A | B | C | D | E | F | G | H | ICH | J | ||||
-2 | -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
Die erste Zeile zeigt, wie zehn Speicherzuweisungen für 10 Zeichen vorgenommen wurden. Unter den Zeichen in der Tabelle in der zweiten Zeile befinden sich die richtigen Indexs (Indizes). Verwenden des Index -1, -2, -3 usw., sollte zu einem ausgebildeten Fehler außerhalb des Bereichs führen. Verwenden des Index 10, 11, 12 usw., sollte auch zu einem aus dem Bereich ausgegebenen Fehler führen.
Dieser Artikel zeigt Situationen, in denen Fehler außerhalb des Bereichs ausgestellt werden. Der für die Code -Samples in diesem Artikel verwendete Compiler ist der G ++ - Compiler für Ubuntu. Vergessen Sie nicht, die Vektorbibliothek für jeden Compiler in das Programm einzubeziehen.
Fehler außerhalb des Bereichs für den definierten Vektor
Ein definierter Vektor ist einer, für den das Gedächtnis für die ersten Elemente zugewiesen wurde. Die Werte können Standard- oder praktische Werte für den Vektorelementtyp sein. Ein deklarierter Vektor ohne Initialisierung ist kein definierter Vektor. Für einen solchen Vektor gibt es keine Speicherzuweisung für ein Vektorelement. Ein solcher Vektor ist leer.
G ++ - Compiler für Ubuntu
Angenommen, es gibt zehn Elemente in einem Vektor; Ein nicht ungewöhnlicher Fehler von Personen, die in der Programmierung unerfahren sind, besteht darin, mit dem Index von 10 auf das zehnte Element zuzugreifen. Es sollte mit dem Index von 9 zugegriffen werden, da die Indexzählung von 0 beginnt. Betrachten Sie das folgende Programm mit 10 Elementen im Vektor und dem Zugriff auf das zehnte Element mit dem Index von 10:
#enthaltenDieses Programm mit dem G ++ - Compiler für Ubuntu gibt eine Ausgabe von ", was ein Charakter von nichts ist (kein Raum). Ein Charakter von Nichts ist das Standardcharakter für Zeichen in C++. Es gibt keinen elften Term für diesen Vektor. Die zweite Anweisung ist also eine Fehleranweisung, die vom G ++ - Compiler nicht erkannt wird. Mit dem G ++ - Compiler wird es zur Laufzeit immer noch nicht erkannt, und das Programm funktioniert falsch.
Einige andere Compiler
Wenn das obige Programm mit einigen anderen Compilern verwendet wird, wird die Fehleranweisung zur Laufzeit erkannt, und eine Ausnahme wird mit einer bei der Ausgabe veröffentlichten Fehlermeldung ausgeliefert. Der Fehler wird jedoch zur Kompilierungszeit immer noch nicht erkannt.
Betrachten Sie die folgende Erklärung:
VektorDies sieht vielleicht nicht wie eine Definition aus, aber es ist eine Definition. Es gibt zehn Speicherorte für die zehn Vektorelemente mit dem Standardzeichenwert.
Außerirdischer Fehler für undefinierte Vektor
Ein deklarierter Vektor ohne Initialisierung ist kein definierter Vektor. Für einen solchen Vektor gibt es keine Zuordnung für ein Vektorelement. Ein solcher Vektor ist leer.
G ++ - Compiler für Ubuntu
Wenn ein deklarierter Vektor keine Initialisierung hat (oder keine Standardwerte), gilt die Verwendung des Indexs nicht für den Vektor beim Zugriff auf ein Element des Vektors, da es nicht gibt. Auch der Null -Index kann nicht verwendet werden, um auf das erste Element zuzugreifen, das nicht vorhanden ist. Im folgenden Programm wird versucht, auf das erste Element zuzugreifen, das nicht vorhanden ist:
#enthaltenDie erste Aussage in der Hauptfunktion deklariert einen Vektor ohne Speicherort für eines seiner Elemente. Diese Aussage ist keine Definition. Die zweite Anweisung versucht, den Wert bei Index 0 zu lesen. Dies ist eine Fehleranweisung, da der Vektor kein Element hat und daher bei einem Index Null kein Element vorhanden ist.
Mit dem G ++ - Compiler kompiliert das Programm erfolgreich, aber zur Laufzeit, wenn die zweite Aussage in der Hauptfunktion erreicht ist, wird das Programm gestoppt und die folgende Fehlermeldung veröffentlicht:
Segmentierungsfehler (Core Dumped)Einige andere Compiler
Die Ausführung des obigen Programms in anderen Compilern und die Feststellung ihrer entsprechenden Fehlermeldungen bleibt dem Leser als Übung überlassen.
Abschluss
Der Vektor-Index-Fehler außerhalb des Bereichs tritt auf. Außerirdischer Fehler entspricht nicht ständig wie der Segmentierungsfehler (Kernbezahlt).