Seite 1 von 1

QString hashcode

Verfasst: 19. September 2012 15:02
von simon.hain
Gibt es ein Äquivalent zu javas hashCode() für QString?

Re: QString hashcode

Verfasst: 19. September 2012 16:08
von simon.hain
Den code mit MD5 habe ich auch schon gesehen, ich hatte gehofft dass es da etwas einfacheres gibt :)
which digests the data stored in an instance of the class into a single hash value (a 32-bit signed integer).
QHash benutzt eine ähnliche Funktion, und man kann QString ja als key nutzen ohne dass man qHash implementieren muss.
Allerdings steht das in der API als "Related Non-Members".
An sich würde ich gerne
http://qt-project.org/doc/qt-4.8/qhash.html#qHash-21
aufrufen, weiß aber nicht wie das geht.

Re: QString hashcode

Verfasst: 19. September 2012 17:06
von brax
simon.hain hat geschrieben: An sich würde ich gerne
http://qt-project.org/doc/qt-4.8/qhash.html#qHash-21
aufrufen, weiß aber nicht wie das geht.
Dann mach das doch einfach:

Code: Alles auswählen

#include <QHash>

...
QString qStringToHash = "foo";
uint hashValue = qHash(qStringToHash);
...

"Related Non-Members" heißt doch nur, dass es sich um eine "freie" Funktion handelt, im Gegensatz zu einer Memberfunktion oder statischen Funktion.

Re: QString hashcode

Verfasst: 19. September 2012 17:10
von simon.hain
Tatsache, super, danke!
Freie Funktionen kannte ich noch nicht, ist hier so learning by doing 8)

Re: QString hashcode

Verfasst: 19. September 2012 17:25
von brax
Kein Ding.

...und damit Du noch ein bißchen lernst (falls Interesse besteht, sonst einfach nicht weiterlesen): C++ ist eine so genannte "multi-paradigmen" Sprache. Sie wird zwar in erster Linie objektorientiert eingesetzt, ist aber im Gegensatz zu z.B. Java oder Smalltalk nicht auf Objektorientierung limitiert. Sie erlaubt auch imperative/prozedurale Programmierung (dazu gehören dann eben freie Funktionen), (teilweise) funktionale Programmierung (über Funktionspointer und Lambdas) und generische Programmierung (Templates).
Um C++ besonders effektiv einsetzen zu können empfiehlt es sich, sich zumindest ein wenig mit den anderen Programmier-Paradigmen auseinanderzusetzen und wie sie in C++ benutzt werden können, um für die jeweilige Aufgabe das beste Werkzeug zu benutzen.

Übrigens spricht man in der Regel bei "nicht freien" Funktionen (also solche, die innerhalb einer Klasse definiert sind, ob statisch oder nicht) von "Methoden".

Re: QString hashcode

Verfasst: 19. September 2012 17:37
von simon.hain
Ich versuche das mit dem lernen und "produktiv sein" in etwa zu verbinden, mache mich also meistens auf die Suche wenn irgendwas nicht klappt.
Im Moment klappt das ganz gut, Qt ist mir als Java-Entwickler anscheinend ein bischen näher :mrgreen: