Dans le cadre de mon projet, je voudrais réaliser un tri par ordre alphabétique sur un fichier-base de données.
J'ai regardé sur le net, et on parle souvent de STL, alors j'ai regardé sur "developpez", j'ai trouvé une introduction à STL, mais pour les exemples et des explications concrètes sur les fonctions, c'est pas le fort, vous me direz "et alors, pour ça t'as la doc", certes, mais je ne sais pas trop quoi chercher vu que les exemples donnés ne correspondent pas vraiment à ce que je cherche. J'ai trouvé un algo' tout fait donné sur "CS", mais je comprends mm pas ce qu'il se passe c'est pas marrant .
Quelqu'un pourrait-il faire un petit spitch sur comment faire cet algo' de tri ( sachant que le fichier de données ferait plusieurs centaines de lignes ).
Sinon je m'orienterais volontier faire SQLite avec Qt, mais la encore, quelqu'un connait-il un bon tuto ? car les tuto la dessus ne courent pas sur la toile..
ben, je veux trier ce que contient mon fichier de données, càd des string.
Je cherche plutot à avoir un code optimal, les algorithmes c'est certes intéressant, mais comme le tri n'est pas du tout le but de mon programme, je préfère ne pas y passer trop de temps, en effet le tri sert essentiellement à une recherche dichotomique ne représentant qu'une partie infime du programme mais devant dependant être rapide, et à organiser un fichier texte qui servira d'autocompleter, donc je préfère utiliser un tout fait, ou une base de données!!
Tu aurais un algo de tri à m'indiquer ? un que tu affectionne plus particulièrement ?
Quand tu as fini d'insérer, tous les éléments sont dans l'ordre. Ca t'évite d'appeler sort. Par contre, pour placer un nouvel élément, faut savoir où le placer ... Donc ça prend un peu de temps de ce côté là.
Quand tu as fini d'insérer, tous les éléments sont dans l'ordre. Ca t'évite d'appeler sort. Par contre, pour placer un nouvel élément, faut savoir où le placer ... Donc ça prend un peu de temps de ce côté là.
Si j'ai besoin de lui dire où le mettre,il sert à rien, c'est comme si je faisais le tri à la main, alors sois tu t'exprime mal, sois j'ai rien compris XD
Non, il sait lui même où le mettre, mais il doit le chercher, ça prend du temps de processeur. Il se trie lui-même au lieu que tu le fasse. C'est son avantage.
Ah ok, donc c'est moi qui n'avait rien compris XD,tu parlais du processeur, j'avais pas suivi :x
Au risque d'abuser de ta bonté, t'aurais un exemple ?
EDIT : car en fait le problème c'est le fichier, pour fournir à set la liste dans laquelle il doit insérer mon string, je vais devoir lire toutle fichier !! et le mettre dans une variable, et mon fichier devrait tater aisément les 500 lignes :/, d'où mon gout pour la BDD
si tu pouvais rajouter des commentaires sur ce que fais chaque ligne stp, avec autant de précisions et de rigueur que tu peux, je comprends vite mais faut m'expliquer longtemps ^_^'
EDIT : ce que je veux faire ::
J'ai un fichier nommé "data.cb", il contient des informations sur des gens.
(Je précise que ce fichier est formaté par mon programme).
A un instant t, un nouveau membre est entré dans le fichier, et les informations le concernant sont initialisées à 0 ( toute les informations ssont des valeurs numériques ).
Lorsque on veut ouvrir la session d'un membre, on rentre son nom dans un QLineEdit et apparait alors les informations le concernant; hors, comme la base de données sera "grosse", il est impératif d'opérer via une recherche dichotomique, d'où le besoin que la liste soit ordonnée, de plus l'autocompleter a besoin d'une liste ordonnée ( fichier parallèle ).
Plus j'avance et plus je me dis que la base de donnée serait mieu :s
Tu devrais comparer la taille de ton fichier à la taille de ta mémoire vive. Il est fort probable que 500 lignes rentre aisément d'un seul coup d'un bloc dans la mémoire sans avoir besoin de bidouille.
si tu pouvais rajouter des commentaires sur ce que fais chaque ligne stp, avec autant de précisions et de rigueur que tu peux, je comprends vite mais faut m'expliquer longtemps ^_^'
Le premier bloc crée soit un vecteur de string, soit un ensemble trié de string (par défaut ça trie dans l'ordre alphabétique...)
Le deuxième va lire ligne par ligne dans le fichier et rajoute chaque ligne dans le vecteur ou l'ensemble trié.
Cela se fait plus rapidement pour le vecteur car il se contente de rajouter la ligne à la fin du "tableau" alors que lorsque tu insères la ligne dans le set, il va la mettre au bon endroit pour conserver l'ordre alphabétique.
Le dernier bloc trie dans l'ordre alphabétique toutes les lignes du vecteur... ou ne fait rien pour l'ensemble trié ... car justement c'est déjà trié.
si tu pouvais rajouter des commentaires sur ce que fais chaque ligne stp, avec autant de précisions et de rigueur que tu peux, je comprends vite mais faut m'expliquer longtemps ^_^'
EDIT : ce que je veux faire ::
J'ai un fichier nommé "data.cb", il contient des informations sur des gens.
(Je précise que ce fichier est formaté par mon programme).
A un instant t, un nouveau membre est entré dans le fichier, et les informations le concernant sont initialisées à 0 ( toute les informations ssont des valeurs numériques ).
Lorsque on veut ouvrir la session d'un membre, on rentre son nom dans un QLineEdit et apparait alors les informations le concernant; hors, comme la base de données sera "grosse", il est impératif d'opérer via une recherche dichotomique, d'où le besoin que la liste soit ordonnée, de plus l'autocompleter a besoin d'une liste ordonnée ( fichier parallèle ).
Plus j'avance et plus je me dis que la base de donnée serait mieu :s
Si les données sont trop importantes et que tu as peurs de ne pas arriver à les gerer efficacement alors fait le saut sur la BDD.
Il n'y a pas 10000 façon d'utiliser une BDD! SQLite étant même très facile.
Je n'ai jamais travailler avec SQLite ou Qt mais je sais lire de la doc et chercher sur Google. À ce que j'ai pu voir TOUT est là!
Trier par ordre alphabétique
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
* Un wrapper C++ pour sqlite * Une alternative a boost units