Abusons de QMapDate de publication : 25/02/2009. Date de mise à jour : 01/08/2011.
Par
traducteur : Thibaut Cuvelier (Site web) Qt Quarterly (La liste complète)
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.
I. L'article original
II. Abusons de QMap
III. Divers
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 :
QMap < QString , QStringList > map;
|
Insérer une valeur dans une "multimap" est simple :
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.
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.
map[" presidents " ].append( " George Bush " );
map[" presidents " ].append( " George Bush " );
|
En supprimer une est aussi rapide.
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.
if ( ! map[" presidents " ].contains(" John Adams " ) )
map[" presidents " ].append (" John Adams " ) ;
|
Et elles peuvent être facilement entièrement supprimées.
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 !
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'à 3 ans de prison et jusqu'à 300 000 E
de dommages et intérêts. Cette page est déposée à la SACD.
|