QString hashcode

Verschiedenes zu Qt
Antworten
simon.hain
Beiträge: 10
Registriert: 30. August 2012 14:03

QString hashcode

Beitrag von simon.hain »

Gibt es ein Äquivalent zu javas hashCode() für QString?
simon.hain
Beiträge: 10
Registriert: 30. August 2012 14:03

Re: QString hashcode

Beitrag 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.
brax
Beiträge: 208
Registriert: 11. Mai 2010 11:22

Re: QString hashcode

Beitrag 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.
simon.hain
Beiträge: 10
Registriert: 30. August 2012 14:03

Re: QString hashcode

Beitrag von simon.hain »

Tatsache, super, danke!
Freie Funktionen kannte ich noch nicht, ist hier so learning by doing 8)
brax
Beiträge: 208
Registriert: 11. Mai 2010 11:22

Re: QString hashcode

Beitrag 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".
simon.hain
Beiträge: 10
Registriert: 30. August 2012 14:03

Re: QString hashcode

Beitrag 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:
Antworten