Salut.
en fait, je veux trier un vecteur de int avec la fonction qsort(), je sais le faire avec un tableau mais pour vector ça me dépasse surtout pour la fonction de comparaison.
Si vous avez des suggestions je vous serai reconnaissant.
Merci
Salut.
en fait, je veux trier un vecteur de int avec la fonction qsort(), je sais le faire avec un tableau mais pour vector ça me dépasse surtout pour la fonction de comparaison.
Si vous avez des suggestions je vous serai reconnaissant.
Merci
dans la STL ( d'où vient std::vector ) il y a les <algorithm> dont un qui s'appelle std::sort.
Et qui trie un vecteur ( et autres containers ).
exemple:
si tu utilises les std::vector et autres objets de la librairie standard (comme les std::string), je te conseilles d'oublier le C et de trouver une bonne doc sur la STL du C++.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #include <algorithm> #include <vector> int main() { std::vector< int > v; v.push_back( 1 ); v.push_back( 3 ); v.push_back( 2 ); std::sort( v.begin(), v.end() ); }
Pour la fonction de comparaison, si tu as des classes persos, un des moyens est de définir un opérateur< membre de cette classe. Un autre moyen est de fournir effectivement des fonctions de comparaisons. Mais si tu veux trier tes int dans un ordre croissant, tu n'en as pas besoin.
Les fonctions de comparaison s'appellent des "foncteurs" (functor en anglais). Je le précise car "google n'est pas notre ami" quand on ignore un terme.
Aussi, car on ne trie pas un vector<> pour le plaisir, une recherche dans un vector<> trié se fait via std::lower_bound() (éventuellement binary_search()). Tout cela se trouve dans
Code : Sélectionner tout - Visualiser dans une fenêtre à part #include <algorithm>
std::sort est plus rapide que qsort.
Enfin si tu veux utiliser qsort, rien de plus facile. &v[0] te donne un pointeur vers le premier élément de ton vecteur, ce qui est donc la même chose qu'avec un tableau.
Partager