*gelöst* Wie realisiert man variable Arrays in Klassen (ohne Referenzen!)
-
Hallo,
Ich habe folgendes Problem:
class Path {
int *partition
bool *besucht
...
}
// speichert eine Moeglichkeit wie ein Graph k-partit teilbar istIn einer andere Klasse wird meine Funktion seperate_G_in_k() realisiert.
Diese Funktion errechnet mir die korrekten Partitionen in Form eines Arrays. Dies habe ich mit der Konsole mehrfach überprüft. Nun habe ich das Problem, dass diese Arrays nur solanglebig sind wie meine Funktion seperate_G_in_k().
Ich bräuchte sie jeodch in einem ausgelagerten Stack. Leider ist mir keine Möglichkeit bekannt, variable Arrays in Klassen zu realisieren, außer als Referenzen... Diese zeigen jedoch nach der Funktion ins Nirwana.Das ist das Problem. Ich bitte um Hilfe.
*bin immer wieder überrascht wie schnell hier gute Antworten kommen...*
-
std::vector, std::list, ... je nachdem wie deine Anforderungen sind.
außer als Referenzen
Meinst du vielleicht Zeiger?
-
std::vector?
edit: Oh, viel zu langsam und das bei so einer kurzen Antwort. Das kommt davon, wenn man den Tab 5 Minuten ungelesen offen hat.
-
Oh... ich glaub den Unterschied zwischen Pointer, Zeiger und Referenzen werd ich glaub ich nicht verstehen. (gibts da eigentlich einen?) std:vector...
Gut ich werds mal versuchen. Hatte ich bis jetzt nocht nicht gemacht.
vielen Dank.
-
Pointer und Zeiger sind das selbe. Eine Referenz ist was anderes.
-
Hmmm...
Ich hab jetzt folgendes gelesen. Prinzipell erscheint std::vector wie eine generische Liste. Einfügen ist vorne und hinten möglich. Mit Swap geht man durch den Vector durch.
Ich muss allerdings an verschiedenen (unregelmäßigen) Indexen einfügen bzw. Werte ändern. Also weden push_back oder push_front. Desweiteren muss ich auch noch einen 2-D Array übergeben. Geht das dann auch mit Vector?
Wichtiger wäre jedoch das Einfügen erstmal...
-
Du kannst im vector an jeder Stelle einfügen und löschen. Effizient ist es aber nur hinten (genauso wie bei einem Array). Wenn Du auch oft vorne einfügst ist std::deque besser. Wenn Du ständig überall einfügst und löscht wahrscheinlich eine std::list.
-
Über vector bitte lesen:
http://www.cplusplus.com/reference/stl/vector/
Du kannst dort jedes beliebige Objekt einfügen entfernen, oder den vector ALS dynamischen Array benutzen. Arrays würde ich dort eher nicht hineinschieben, lieber andere vectoren.
-
ComputerCarl schrieb:
Hmmm...
Ich hab jetzt folgendes gelesen. Prinzipell erscheint std::vector wie eine generische Liste. Einfügen ist vorne und hinten möglich. Mit Swap geht man durch den Vector durch.
Ich muss allerdings an verschiedenen (unregelmäßigen) Indexen einfügen bzw. Werte ändern. Also weden push_back oder push_front. Desweiteren muss ich auch noch einen 2-D Array übergeben. Geht das dann auch mit Vector?
Wichtiger wäre jedoch das Einfügen erstmal...Ein Vektor hat kein push_front, weil es langsam ist.
Und was bitte meinst du mit "Mit Swap geht man durch den Vector durch"?
Und 2D Arrays gibt es in C++ nicht, also kannst du auch keine übergeben.
-
hustbaer schrieb:
Und 2D Arrays gibt es in C++ nicht, also kannst du auch keine übergeben.
Lies mal das durch: http://www.cplusplus.com/doc/tutorial/arrays/
Abschnitt: "Multidimensional arrays"@ComputerCarl: Falls du nur vorne und hinten einfügen willst, gibt es geeignetere Container.