___ qstntxt ___
Ist es nur mein Compiler oder ist es verboten, Cons-Referenzen in std :: vector-Elementen zu verwenden? Betrachten Sie folgende Struktur:
%Vor%
Wenn ich nun versuche, ein solches Objekt auf den Vektor zu schieben:
%Vor%
Ich erhalte einen Compilerfehler: "Fehler: nicht-statisches Referenzglied 'const int & amp; Y :: x', kann den Standardzuweisungsoperator nicht verwenden". Sollte nicht genug davon kopiert werden?
___ answer10531042 ___
Nein, weil Sie einer const-Referenz nicht zuweisen können und die STL-Container die Zuweisung zum Verschieben von Elementen verwenden.
Sie verwenden besser eine vector
( %code% oder %code% abhängig von Ihrer Umgebung) oder einen rohen Zeiger.
___ answer10531097 ___
Vielleicht möchten Sie
überprüfen
%Vor%
verfügbar mit C ++ 11
___ answer43265526 ___
Ich benutze schließlich
%Vor%
Ein bisschen nicht gut aussehend, aber machen Sie den gleichen Job.
___ answer10531049 ___
Es ist generell verboten, Referenzen in irgendeinem Container zu verwenden. Sie können dies dadurch rechtfertigen, dass ein Vektor zum Beispiel die Daten im Vorhinein zuweist und Referenzen nur einmal vergeben werden (während der Initialisierung).
___ antwort10531045 ___
Ein Zuweisungsoperator ist notwendig, weil %code% default Elemente in zusätzlichen Slots vor der Zeit erstellt.
Später, anstatt es neu zuzuweisen, verwendet es den Zuweisungsoperator, um diese Standardinstanzen dem zuzuordnen, was Sie in den Vektor schieben.
___ qstnhdr ___ Const verweist auf std :: vector Elemente
___ tag123stl ___ Die Standardvorlagenbibliothek (STL) ist eine C ++ - Bibliothek mit generischen Containern, Iteratoren, Algorithmen und Funktionsobjekten.
Als C ++ standardisiert wurde, wurden große Teile der STL in die Standardbibliothek übernommen, und diese Teile in der Standardbibliothek werden manchmal auch zusammen als "die STL" bezeichnet.
___ tag123reference ___ Eine Referenz ist ein Wert, der es einem Programm ermöglicht, indirekt auf ein bestimmtes Datum wie eine Variable oder einen Datensatz im Computerspeicher oder in einem anderen Speichergerät zuzugreifen.
___ tag123c ___ C ++ ist eine universelle Programmiersprache. Es wurde ursprünglich als Erweiterung von C entworfen und behält eine ähnliche Syntax, ist aber jetzt eine komplett andere Sprache. Verwenden Sie dieses Tag für Fragen zu Code, der mit einem C ++ - Compiler kompiliert werden soll.
___ tag123vector ___ Ein Vektor ist ein eindimensionales Array: Er enthält Komponenten, auf die mit einem ganzzahligen Index zugegriffen werden kann. In einigen Sprachen kann die Größe eines Vektors nach Bedarf vergrößert oder verkleinert werden, um Elemente hinzuzufügen und zu entfernen, nachdem der Vektor erstellt wurde. Verwenden Sie "Vektorgrafiken" für die grafische Darstellung.
___ tag123const ___ Const ist ein Qualifikationsmerkmal, das zum Definieren eines Datenspeicherbereichs (Objekt, Feld, Variable, Parameter) verwendet wird, der sich "nie ändert", wodurch zusätzliche Codegeneratoroptimierungen und zusätzliche statische Überprüfung der Programmkorrektheit ermöglicht werden.
___ answer10531067 ___
Die Elemente %code% müssen zuweisbar sein. Aus Abschnitt 23.2.4 Klassenvorlagenvektor des C ++ - Standards:
... das gespeicherte Objekt muss die Anforderungen von Assignable erfüllen.
___