Referenz als Listeneintrag
-
Hallo!
ich bin C++ Newbie, insbesondere um gut verständliche Antworten dankbar

Ich kämpfe gerade mit einem Stackoverflow. Die Datenmenge ist noch optimierbar, und folgendermaßen strukturiert:
Ich habe ca. 20 Vektoren. Jeder Vektor hat 7 Einträge (für jeden Wochentag einen). Jeder Eintrag eines Vektors ist eine (ziemlich große) Tabelle.
Es kommt jedoch oft vor dass Tabellen für mehrere Wochentage die selben sind. So frage ich mich, ob ich beispielsweise in den 2. Eintrag eines Vektors eine Referenz auf den ersten Eintrag machen kann?
Ich arbeite übrigens mit QVector und QList, glaube aber nicht dass das hier von Relevanz ist, sondern dass es auch normale Vektoren tun würden.
Z.B.:const Tabelle blubb(QVector<Qlist< QList< double> > >) << (QList<QList< double > >() << 1, 3, 3, 7 << 7, 3, 3, 1);
blubb[2]= blubb[1]; // so funktioniert das natürlich nicht, aber wie sonst?
Ich hoffe ich hab das Problem so erklärt dass es jeder gut verstehen kann. Sonst einfach nachfragen.
-
Soweit ich das jetzt verstanden habe, wären Pointer auf die Elemente in den Vektoren ganz gut.
Ist das Element neu, wird es mit new erstellt, ansonsten kriegt es die Adresse des Elementes, was bereits existiert.
Mittels std::shared_ptr löst sich auch das Löschungsproblem in Luft auf.
-
aber es müssen doch alle einträge in einem vektor vom selben typ sein? insbesondere kann ich nicht ins erste Feld ein double reinschreiben und ins zweite einen Zeiger (aufs erste) ?
-
Nein, du nutzt immer Zeiger.
vector<std::shared_ptr<DeinTyp>> vector; vector.push_back(new DeinTyp); vector.push_back(vector[0]); //...
-
Den Stack entlastet Ihr auf diese Art aber nicht...
-
Das war es aber, was der TE wollte...
-
Sicher?
nerdpol schrieb:
Ich kämpfe gerade mit einem Stackoverflow.
Naja, er muß es wissen.