Große Datenmengen verarbeiten
-
Hallo Leute.
Wenn ich in einer einfach verkette Liste mehrere 100 Einträge initialisieren will stürzt das Programm ab. Pro Eintrag in der Liste müssen 3 Single Werte rein.
Mein Grund für die Liste war, dass ich alle 3 zusammengehörenden Werte beisammen habe. Außerdem ist sie einfacher zu hand haben als ein Dreidimensionales Array oder 3 Arrays mit einer Dimension.
Gibt es eine bessere und effizientere Lösung als eine einfach verkettete Liste für dieses Problem?
Danke schon mal im Voraus.
-
struct three_stooges { float m_larry; float m_moe; float m_curly; }; std::vector<three_stooges> fump; // oder alternativ CArray<three_stooges> fopp;?
-
Danke auf die Idee wär ich noch nicht gekommen. Werd ich mal probieren.
-
Irgendwie bekomm ich das mit dem Array nicht hin. Da ich diesen Teil auslagern möchte habe ich das in eine Klasse gesteckt.
ref struct punkt { Single xWert; Single yWert; Single zWert; }; ref class interpolieren { array <punkt^> ^tabPunkte; array <punkt^> ^punkteMuster; public: interpolieren(void); void tabEinlesen(array <Single> ^xWert, array <Single> ^yWert, array <Single> ^zWert); Single tabAusgebenX(Int32 i); };interpolieren::interpolieren(void) { array <punkt^> tabPunkte = gcnew array <punkt^>(0); this->tabPunkte = tabPunkte; } void interpolieren::tabEinlesen(array <Single> ^xWert, array <Single> ^yWert, array <Single> ^zWert) { for (Int32 i = 0; i < xWert->Length; i++) { Array::Resize(this->tabPunkte,i+1); this->tabPunkte[i]->xWert = xWert[i]; this->tabPunkte[i]->yWert = yWert[i]; this->tabPunkte[i]->zWert = zWert[i]; } } Single interpolieren::tabAusgebenX(Int32 i){ return this->tabPunkte[i]->xWert; }Bei der Funktion tabEinlesen tritt dann der Fehler auf. Sobald der xWert dem Array übergeben werden soll kommt die Fehlermeldung:
**Eine nicht behandelte Ausnahme des Typs "System.NullReferenceException" ist in CNCPoint.exe aufgetreten.
Zusätzliche Informationen: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.**
Ich bin echt am verzweifeln.
-
Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt
ich glaub der fehler liegt bei
<punkt^>du musst fuer jedes element nochmal
gcnew punkt() durchfuehren// pseudo
this->tabPunkte[i] = gcnew punkt();BTW: das ist .Net/CLI
-
Danke jetzt funktionierst wunderbar. Ist zwar ein wenig kompliziert aber gut.
Bin auch schon drauf gekommen das es eigentlich ins andere Forum gehört.
-
wuerde es nicht reichen statt
array <punkt^> ^tabPunkte,
array <punkt> ^tabPunktezu verwenden ?
-
nein da ich eine ref struct machen muss brauche ich das dach. ansonsten hättest du recht.
-
Lässt sich eine ref struct denn nicht in STL Container packen?
-
ref struct soweit ich weiss nicht - nur ohne ref
-
Ab VC9 (VS2008) gibt es die STL.NET; was eine .NET-Implementeirung einiger STL-Klassen ist. Sie ist auch schneller als die meisten .NET-Generics-Klassen

Siehe:
http://www.developer.com/net/cplus/article.php/3524096
http://blogs.msdn.com/vcblog/archive/2006/12/22/an-update-to-stl-clr-is-complete.aspx