Was bekomme ich von vorne () von leerem Std-Container?
Wenn front()
gibt einen Verweis, und der Behälter ist leer, was erhalte ich ein undefined reference? Bedeutet es, ich brauche, um zu überprüfen empty()
vor jeder front()
?
InformationsquelleAutor der Frage jackhab | 2009-03-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erhalten Sie ein Undefiniertes Verhalten - Sie brauchen, um zu überprüfen, dass der container enthält etwas, was mit empty() (die überprüft, ob der container leer ist) vor dem Aufruf von vor().
InformationsquelleAutor der Antwort
Erhalten Sie ein Undefiniertes Verhalten.
Bekommen Reichweitenkontrolle verwenden(0). Wenn dies fehlschlägt, erhalten Sie eine
out_of_range
Ausnahme.InformationsquelleAutor der Antwort graham.reeds
Ja, Sie können 'bei' wie Graham erwähnt, anstatt vor.
Aber(0) ist nur für einige Container - Vektoren, deque und nicht für andere, Liste, queue, stack. In diesen Fällen haben Sie zu fallen zurück auf die Sicherheit des "leer" zu prüfen.
InformationsquelleAutor der Antwort Arun R
Undefiniertes Verhalten
InformationsquelleAutor der Antwort anil
Haben Sie immer sicher sein, dass Ihre container nicht leer ist, vor dem Aufruf von vor() auf dieser Instanz.
Aufruf von empty() als safe guard ist gut.
Natürlich, je nach programm-design, immer mit einer nicht-leeren container könnte eine invariante Anweisung ermöglicht Ihnen zu verhindern, und speichern der Aufruf von empty() wird jedes mal, wenn Sie rufen vor(). (oder zumindest in einem Teil des Codes?)
Aber wie erwähnt oben, wenn Sie möchten, um zu vermeiden, undefinied Verhalten in Ihrem Programm, die machen es zu einem starken invariante.
InformationsquelleAutor der Antwort yves Baumes