datenspeicherung: dynamische arrays? vectoren?
-
hallo, wie kann ich große Datenmengen (ca. 400.000-500.000 doubles) speichern?
bisher hat nichts so richtig funktioniert, was ich versucht habe (allerdings war das meiste qt-zeug wie QArray; bei vector<double> weiss ich nicht, wie ich das korrektt machen soll - die datenstruktur muss auch an eine andere klasse weitergegeben werden können).
also wenn ihr mir helfen könnt, wäre das gut. aber bitte konkrete codebeispiele, nicht so: da musst du XXX nehmen und dies und jenes damit machen.
Marrt
-
da kannst du einen std::vector nehmen.
std::vector<double> myVec; myVec.push_back(1.0); double ret = myVec[0]; void myFunc(std::vector<double> &v) { // vorsicht, adresse genommen! v[0] = 2.2; }
wo ist das problem?
-
also wenn ich mir das forum hier so angucke, scheint das probate mittel ja der vector<double> zu sein. versucht hatte ich es mit ihm ja auch schon mal ..
wie muss ich den vector genau definieren?
-> jede klasse, die den vektor benutzt, muss #include<vector> haben?
-> das using namespace std muss zwischen den includes und der klassendefinition stehen?
-> und das bei jeder klasse?und dann kann ich den vector übergeben?
danke, Marrt
-
Zum Beispiel so:
#include <qvaluevector.h> int main() { QValueVector<double> vec(500000); for (int i = 0; i < 500000; ++i) { vec[i] = i; } }
-
namecpaces und include sachen liest du am besten in der faq oder in deinem buch nach. zur klasse:
#include <vector> class myClass { public: myClass() { m_values.size(100); // optional: vorinitialisieren } std::vector<double> m_values; }; ... myClass bla; bla.m_values.push_back(1.0); bla.m_values.push_back(25.0); ... std::vector<double> *pVec = &(myClass.m_values); // sollte man allerdings so nicht machen :) pVec->push_back(1.0); double elem = (*pVec)[2];
was ist genau dein problem?