Heim > Backend-Entwicklung > C++ > Warum kann ich Referenzen nicht als Elemente in einem Standardvektor verwenden?

Warum kann ich Referenzen nicht als Elemente in einem Standardvektor verwenden?

DDD
Freigeben: 2024-12-26 16:13:13
Original
882 Leute haben es durchsucht

Why Can't I Use References as Elements in a Standard Vector?

Warum akzeptiert mein Vector keine Referenzen?

Problem: Vector funktioniert, aber Vector verursacht Compilerfehler.

Erklärung:

Vektoren und andere Container erfordern, dass ihre Komponententypen zuweisbar sind. Eine Referenz ist ein nicht zuweisbarer Typ, da sie eine konstante Referenz auf einen bestimmten Speicherort enthält. Sobald eine Referenz initialisiert ist, kann sie nicht mehr auf ein anderes Objekt verweisen.

Mögliche Ansätze:

  • Verwenden Sie stattdessen Zeiger: Dies ist Dies ist die empfohlene Option, wenn Sie mehrere Referenzen auf verschiedene Objekte speichern müssen. Zeiger können verschiedenen Speicherorten zugewiesen und neu zugewiesen werden.
std::vector<int*> hello;
Nach dem Login kopieren
  • Erstellen Sie einen Vektor von Referenzen auf Objekte eines festen Typs: Dieser Ansatz ist, wenn überhaupt, akzeptabel Die Referenzen beziehen sich auf Objekte desselben Typs, die nach dem Einfügen in die nicht zugewiesen oder geändert werden Vektor.
struct MyStruct { int data; };

std::vector<MyStruct&> hello;
Nach dem Login kopieren

Es ist jedoch wichtig zu beachten, dass diese Strategie zu fehlenden Referenzen führen kann, wenn die referenzierten Objekte gelöscht oder verschoben werden.

  • Verwendung eine Wrapper-Klasse: Sie können eine Wrapper-Klasse erstellen, die intern eine Referenz enthält und eine zuweisbare Schnittstelle bereitstellt. Dadurch können Sie die Klasse als Containerelement verwenden.
class Wrapper {
protected:
    int& _data;
public:
    Wrapper(int& data) : _data(data) {}
};

std::vector<Wrapper> hello;
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum kann ich Referenzen nicht als Elemente in einem Standardvektor verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage