Framework interne Klassen oder STL
-
Hallo Gemeinde,
ich arbeite mit Qt, Qt bietet eigentlich für fast alles interne Klassen, als Beispiel nehme ich mal Vectoren.
In Qt:
QVector<int> integerVector;STL:
std::vector<int> integerVector;Boost:
boost::numeric::ublas::vector<int> integerVector;Wie man sehen kann habe ich 3 Möglichkeiten zu Auswahl, was mit die Entscheidung nicht gerade einfach macht. Ich weiß leider nicht wo bei den 3 Varianten der Vorteil/Nachteil liegt, geschweige denn für was ich mich entscheiden soll.
Hat da jemand einen kleinen Tipp für mich. Oder eventuell etwas zu lesen, eine Gegenüberstellung oder so etwas.
Vectoren sind nur ein Beispiel da gibts noch andere Sachen.
so long
jd
-
Wenn Du Dein Backend von Der GUI unabhängig halten willst, würde ich die STL-Container empfehlen. Soweit ich weiss, kann man Qt so übersetzen, dass es mit den STL-Containern kompatibel ist bzw. dass man die STL-Container in Qt-Container überführen kann.
Wenn Dein Projekt ohnehin untrennbar an Qt gekoppelt ist, kannst Du genausogut die Qt-Container benutzen.
-
Jop, das ist richtig, wenn ich ein Vector mit STL oder BOOST erstelle, kann ich das problemlos in Qt überführen zur Not wird eine Wrapper Funktion gebaut. Am bequemsten ist natürlich wenn ich mit QVector arbeite, aber Bequemlichkeit soll hier erstmal 2. rangig sein. Ich denke mal von der Leistung werden sich die 3 Varianten nicht viel nehmen. Wenn ich von der Kompatibilität ausgehe ist natürlich QVector mein Favorit. Anderseits ist STL ein Standard, also nie verkehrt darauf zurück zu greifen. Boost bietet im Gegenzug viele Optionen um mit einem Vector viele Sachen anzustellen.
Die Wahl der Qual.
so long
jd
-
boost::numeric::ublas::vector<int> integerVector;
Sieht mir eher nach einem Vektor im mathematischen Sinne aus (im Gegensatz zu den beiden erstgeannten).
Boost bietet aber sicher auch ein Pendant zum std::vector<T>.Simon
-
jd schrieb:
..Am bequemsten ist natürlich wenn ich mit QVector arbeite,...Wenn ich von der Kompatibilität ausgehe ist natürlich QVector mein Favorit....
Hi,
da ich mich wirklich 0% mit Qt auskenne: Was ist an QVector bequemer und kompatibler (wozu ?) ?
Oder bietet Qt einfach eine Menge Schnittstellen, die einen QVector entgegennehmen (aber keinen std::vector) ?
Wenn dem so ist, sollte man natürlich auch berücksichtigen, dass eine permanente "Hin-/Herkonvertierung" unnötigen Ballast (auch programmiertechnisch, fehlerträchtig, ....) erzeugt.
(Obwohl ich ein großer std::-Fan bin
)Gruß,
Simon2.