Heim >Backend-Entwicklung >C++ >Warum kann ich in einem C-Vektor keine Referenzen verwenden?

Warum kann ich in einem C-Vektor keine Referenzen verwenden?

DDD
DDDOriginal
2024-12-22 18:11:15716Durchsuche

Why Can't I Use References in a C   Vector?

Das Geheimnis der Vektorreferenzen

Im Bereich C sind Vektoren ein leistungsstarkes Werkzeug für die dynamische Speicherverwaltung. Wenn es jedoch darum geht, Referenzen in Vektoren zu speichern, kann ein rätselhafter Fehler auftreten.

Beachten Sie den folgenden Codeausschnitt:

std::vector<int> hello;

Dieser Code lässt sich nahtlos kompilieren, sodass Sie einen Vektor von erstellen können ganze Zahlen. Aber was passiert, wenn wir stattdessen versuchen, Referenzen zu verwenden?

std::vector<int &> hello;

Der Compiler bricht einen Fehler aus und ruft aus: „Zeiger auf Referenz ist illegal.“ Dieses merkwürdige Verhalten ist auf die grundlegende Natur von Referenzen in C zurückzuführen. Einmal initialisierte Referenzen bleiben unveränderlich und sind während ihrer gesamten Lebensdauer an ihren jeweiligen Referenten gebunden. Das Zuweisen eines neuen Werts zu einer Referenz ist strengstens verboten.

Leider steht diese Unveränderlichkeit im Widerspruch zur Natur von Containern wie Vektoren. Container erfordern, dass ihre Komponenten zuweisbar sind, um eine ordnungsgemäße Speicherverwaltung und Änderungsmöglichkeiten sicherzustellen. Da Referenzen diese Zuweisbarkeit fehlt, sind sie als Vektorkomponenten nicht kompatibel.

Daher ist die einzig praktikable Option zum Speichern von Referenzen in Vektoren die Verwendung von Zeigern, die die erforderliche Flexibilität bieten, um im Laufe der Zeit auf verschiedene Objekte zu zeigen.

Das obige ist der detaillierte Inhalt vonWarum kann ich in einem C-Vektor keine Referenzen verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn