2017-05-02 5 views
1

Ich versuche zu lernen, wie Vektoren funktionieren, da es ein Thema ist, das ich ohne erkennbaren Grund lange Zeit dem Lernen vorenthalten habe.C++ Anzeigen eines Vektors bei der Verwendung eines Zeigers

Meine obigen Code wird kompilieren und ausführen, aber sobald ich eine Nummer in den Vector speichern, wird es Absturz.

Das Programm funktionierte vorher, als ich nur einen Vektor ohne den Zeiger verwendete, aber nur aus Lerngründen wollte ich es mit einem Zeiger versuchen, ich frage mich nur, was mache ich falsch mit diesem Code und wenn jemand könnte Flamme mich für etwas zu tun oder geben Sie mir einen guten Rat darüber, was ich in dieser Situation falsch mache, damit ich für zukünftige Referenz lernen kann. Ersetzen

+0

'std :: Vektor * Vec;' Hier fehlt etwas. – InternetAussie

+1

@InternetAussie: Bitte, Kommentare sind nicht für Antworten. –

Antwort

3

std::vector<int>* Vec;

mit

std::vector<int> vec;

und Ersetzen des Zeigers auf Operator -> mit dem Mitglied Selektionsoperator ..

Nur in seltenen Fällen müssen Sie dynamischen Speicher für eine std::vector Instanz verwenden, da diese Klasse eine ausgezeichnete Arbeit der Verwaltung des Speichers für Sie erledigt. Derzeit weisen Sie Ihrem Vektor keinen Speicher zu, und das Verhalten Ihres Codes ist undefined.

Wenn Sie müssen einen Zeiger verwenden, dann schreiben

std::vector<int>* vec = new std::vector();

und vergessen Sie nicht delete vec; zu rufen, wenn Sie fertig sind. Erwägen Sie die Verwendung von std::unique_ptr & c. so wird die delete automatisch erledigt.

+0

Ich denke, Op will genau das Gegenteil, will den Zeiger auf einen Vektor verwenden .... –

+0

Nun, sie sollten nicht; zumindest nicht zuerst. Das ist der "gute Rat". Aber ich habe trotzdem die "neue" Syntax hinzugefügt. – Bathsheba

0

Mein oben beschriebener Code wird kompiliert und ausgeführt, aber sobald ich eine Zahl in den Vector speichern, wird es abstürzen.

Welcher Vektor?

Sie haben nie einen Vektor erstellt.

Sie haben nur einen Zeiger erstellt, von dem (a) nicht initialisiert ist und (b) nicht auf etwas zeigt, geschweige denn auf einen (c) Vektor.

Verwandte Themen