Abusons de QMap

Image non disponible

La classe QMap<Cle, Valeur> stocke des paires (clé, valeur), où chaque clé est associée à une seule valeur. Cet article présente une méthode très rapide, mais peu propre, pour faire des clés associées à de multiples valeurs.

Cet article est une traduction autorisée de Abusing QMap.

13 commentaires Donner une note à l'article (5)

Article lu   fois.

Les deux auteurs

Site personnel

Site personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. L'article original

Qt Quarterly est une revue trimestrielle électronique proposée par Qt à destination des développeurs et utilisateurs de Qt. Vous pouvez trouver les versions originales.

Nokia, Qt, Qt Quarterly et leurs logos sont des marques déposées de Nokia Corporation en Finlande et/ou dans les autres pays. Les autres marques déposées sont détenues par leurs propriétaires respectifs.

Cet article est la traduction de l'article Abusing QMap paru dans la Qt Quarterly Issue 1.

Cet article est une traduction de l'un des tutoriels en anglais écrits par Nokia Corporation and/or its subsidiary(-ies), inclus dans la documentation de Qt. Les éventuels problèmes résultant d'une mauvaise traduction ne sont pas imputables à Nokia.

II. Abusons de QMap

L'idée de base est de remplacer le type de Valeur par un type plus complexe, comme QValueList, comme ceci :

 
Sélectionnez
QMap<QString, QStringList> map;

QStringList est une version améliorée de QString.

Insérer une valeur dans une "multimap" est simple :

 
Sélectionnez
map["presidents"].append("George Washington");

Si la multi-map contient déjà une clé presidents, map[presidents] retourne une référence au QStringList qui lui correspond. Sinon, une QStringList est créée automatiquement.

Les autres opérations, comme tester la présence d'une paire et sa suppression, sont tout aussi faciles.

 
Sélectionnez
if ( map["presidents"].contains("Bill Clinton" ) )
	 map["presidents"].remove  ("Ronald Reagan") ;

L'opération remove() ci-dessus supprime la paire ("presidents", "Ronald Reagan") de map, si elle la contient. Sinon, l'opération ne fera rien. Vous pouvez même insérer la même paire plusieurs fois.

 
Sélectionnez
map["presidents"].append( "George Bush" );
map["presidents"].append( "George Bush" );

En supprimer une est aussi rapide.

 
Sélectionnez
map["presidents"].remove(
    	map["presidents"].find("George Bush") 
						 );

En programmation comme en politique, les valeurs dupliquées ne sont pas toujours les bienvenues. C'est pourquoi elles peuvent être évitées.

 
Sélectionnez
if ( ! map["presidents"].contains("John Adams") )
	   map["presidents"].append  ("John Adams") ;

Et elles peuvent être facilement entièrement supprimées.

 
Sélectionnez
map["presidents"].remove( "John Adams" );

(NdT :) Depuis Qt4, nous avons droit au QMultiMap, qui permet de faire très exactement la même chose.

III. Divers

Ceci a été écrit pour Qt3. Cependant, la manière de procéder est intéressante pour comprendre le mode de fonctionnement de QMultiMap.

J'aimerais, ici, adresser un grand merci au groupe Qt, pour toute l'aide et les encouragements apportés lors de la traduction de ces articles, et, plus particulièrement, à Alp, yan, IrmatDen, Buggen25, et kinji1. Un tout grand merci à matrix788 pour sa relecture !

Au nom de toute l'équipe Qt, j'aimerais adresser le plus grand remerciement à Nokia pour nous avoir autorisé la traduction de cet article !

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2009 Nokia Corporation. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.