Bonjour
Je voudrait creer un tableau de float et sorti les 5plus grand élément du tableau. Existe-il en QT (ou a defaut en c++) une fonction qui fasse cela
Merci d'avance
Jeane
Bonjour
Je voudrait creer un tableau de float et sorti les 5plus grand élément du tableau. Existe-il en QT (ou a defaut en c++) une fonction qui fasse cela
Merci d'avance
Jeane
STL fournit une fonction sort... Et il y a aussi la fonction qsort en C.
Je confirme, la fonction std::sort() est ton ami, surtout sur des float tu n'as rien à faire ou presque :
std::sort( Tableau, Tableau+TAILLE_DU_TABLEAU);
et hop, ton tableau est trié !
ce bout de code:
ne marche pas !!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 float *tab=new float[5]; for (int i=0;i<5;i++) { tab[i]=10-i; } std::sort(tab,5);
PS: il n'existe pas de fonction QT qui fasse celà?
encore merci
je crois qu'il y a incompréhension entre tut et touco : STL et SDL sont deux choses différentes...
la STL est la librairie standard C++
tandis que la SDL est une librairie C tierce...
pour ton problème, essaie de voir avec les vector de la STL, et les fonctions de tri associées (FAQ C++ et tutos C++ du site )
qsort est à proscrire, il faut utiliser std::sort en C++ - plus rapide -. En même temps, on peut aussi utiliser QVector pour stocker des flottants.
Merci le type QVector est celui que je cherchait.
Cependant je ne trouve pas de fonction de QVector qui tri le vecteur ou eventuellement qui donne les n plus petit élément du tableau.
Cette fonction existe-elle?
Tu peux utiliser std::partial_sort si tu ne veux pas tout trier. Tu peux même l'utiliser sur ton QVector s'il exporte une paire d'itérateurs.
euh c'est à dire??
je suis désolé mais je débute en QT alors je suis pas très à l'aise!!
encore merci
C'est-à-dire que :
Devrait te mettre dans les 5 premiers éléments de Tab les 5 plus grands flottants de ton tableau.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 QVector<float> Tab; ... std::partial_sort(Tab.begin(), Tab.begin() + 5, Tab.end(), std::greater<float>());
Fait un petit test avant quand même. Personnellement, pour mon utilisation (petits tableaux), partial_sort était plus lent que sort (??).
Alors déjà j'ai un probleme avec la classe qvector
j'ecris:
QVector<float> v;
v.append(5.2);
v.append(1.9);
pour remplir mon vecteur
(j'ai fait un #include<qvector.h> )
voilà ce que le compilo me dit:
main.cpp:36: erreur: ‘class QPtrVector<float>’ has no member named ‘append’
idem il ne reconnait pas de v.begin()...
Remarque:
même si j'essaie d'utiliser la stl avec
: stl::vector<int< v;
le compilo dit que vector n'est pas une classe de la stl ....
le namespace de la stl n'est pas stl mais std...
et pour les vector de la STL, c'est pas append, mais push_back
C'est std::vector, pas stl::vector !!
QVector a un membre append : http://qt.developpez.com/doc/4.1/qvector/
Pour trier, l'appel à sort est aussi préconisé.
Au fait, c'est quelle version de Qt ?
Désolé j'avais bien ecrir std::vector mais la réponse est :
main.cpp:35: erreur: ‘vector’ is not a member of ‘std’
Qand à la classe QVector c'est justement à l'adresse indiqué que j'ai trouver que la fonction append me permettait d'ajouter des élément mais apparemment mon compilo n'est pas d'accord...voici ces idre:
main.cpp:37: erreur: ‘class QPtrVector<float>’ has no member named ‘append’
d'ailleurs je ne comprend pas pourquoi il dit que c'est un QPtrVector alors que je le déclare en QVector
Bizzar non?
ma version de qt:
Qmake version: 1.07a (Qt 3.3.4)
pour std::vector, il faut que tu penses à mettre un
Code : Sélectionner tout - Visualiser dans une fenêtre à part #include <vector>
A mon avis, tu n'as pas inclus les headers...Envoyé par Jeane
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager