j'ai un vector d'entier de dimension n, non trié. J'aimerai le trier
selon la relation d'ordre <, d'une manière efficace, tant au niveau du
nbre de lignes de codes, qu'au niveau complexité de l'algorithme.
J'ai donc pensé a la stl, comment pourrais-je donc faire ça ?
j'ai un vector d'entier de dimension n, non trié. J'aimerai le trier selon la relation d'ordre <, d'une manière efficace, tant au niveau du nbre de lignes de codes, qu'au niveau complexité de l'algorithme.
J'ai donc pensé a la stl, comment pourrais-je donc faire ça ?
Si tu veux trier tes entiers (en supposant que tu parles de types de base comme int ou long) selon la relation < par défaut :
#include <vector> #include <algorithm>
int main(int argc, char* argv[]) { std::vector<int> v;
//Le vector est rempli ici d'une manière ou d'une autre
std::sort(v.begin(), v.end());
// Le tri est réalisé en place // std::sort prend un troisième paramètre template permettant de redéfinir la relation d'ordre. // Par défaut, il s'agit d'un std::less qui exploite operator< du type à trier s'il est défini. }
Et pour plus de détails : http://www.cuj.com/documents/sy92/cujcexp1908austern/
Patrick Mézard
j'ai un vector d'entier de dimension n, non trié. J'aimerai le trier
selon la relation d'ordre <, d'une manière efficace, tant au niveau du
nbre de lignes de codes, qu'au niveau complexité de l'algorithme.
J'ai donc pensé a la stl, comment pourrais-je donc faire ça ?
Si tu veux trier tes entiers (en supposant que tu parles de types de base
comme int ou long) selon la relation < par défaut :
#include <vector>
#include <algorithm>
int main(int argc, char* argv[])
{
std::vector<int> v;
//Le vector est rempli ici d'une manière ou d'une autre
std::sort(v.begin(), v.end());
// Le tri est réalisé en place
// std::sort prend un troisième paramètre template permettant de redéfinir
la relation d'ordre.
// Par défaut, il s'agit d'un std::less qui exploite operator< du type à
trier s'il est défini.
}
Et pour plus de détails :
http://www.cuj.com/documents/sy92/cujcexp1908austern/
j'ai un vector d'entier de dimension n, non trié. J'aimerai le trier selon la relation d'ordre <, d'une manière efficace, tant au niveau du nbre de lignes de codes, qu'au niveau complexité de l'algorithme.
J'ai donc pensé a la stl, comment pourrais-je donc faire ça ?
Si tu veux trier tes entiers (en supposant que tu parles de types de base comme int ou long) selon la relation < par défaut :
#include <vector> #include <algorithm>
int main(int argc, char* argv[]) { std::vector<int> v;
//Le vector est rempli ici d'une manière ou d'une autre
std::sort(v.begin(), v.end());
// Le tri est réalisé en place // std::sort prend un troisième paramètre template permettant de redéfinir la relation d'ordre. // Par défaut, il s'agit d'un std::less qui exploite operator< du type à trier s'il est défini. }
Et pour plus de détails : http://www.cuj.com/documents/sy92/cujcexp1908austern/
Patrick Mézard
Nicolas Aunai
Patrick Mézard a utilisé son clavier pour écrire :
j'ai un vector d'entier de dimension n, non trié. J'aimerai le trier selon la relation d'ordre <, d'une manière efficace, tant au niveau du nbre de lignes de codes, qu'au niveau complexité de l'algorithme.
J'ai donc pensé a la stl, comment pourrais-je donc faire ça ?
Si tu veux trier tes entiers (en supposant que tu parles de types de base comme int ou long) selon la relation < par défaut :
#include <vector> #include <algorithm>
int main(int argc, char* argv[]) { std::vector<int> v;
//Le vector est rempli ici d'une manière ou d'une autre
std::sort(v.begin(), v.end());
// Le tri est réalisé en place // std::sort prend un troisième paramètre template permettant de redéfinir la relation d'ordre. // Par défaut, il s'agit d'un std::less qui exploite operator< du type à trier s'il est défini. }
Et pour plus de détails : http://www.cuj.com/documents/sy92/cujcexp1908austern/
Patrick Mézard a utilisé son clavier pour écrire :
j'ai un vector d'entier de dimension n, non trié. J'aimerai le trier
selon la relation d'ordre <, d'une manière efficace, tant au niveau du
nbre de lignes de codes, qu'au niveau complexité de l'algorithme.
J'ai donc pensé a la stl, comment pourrais-je donc faire ça ?
Si tu veux trier tes entiers (en supposant que tu parles de types de base
comme int ou long) selon la relation < par défaut :
#include <vector>
#include <algorithm>
int main(int argc, char* argv[])
{
std::vector<int> v;
//Le vector est rempli ici d'une manière ou d'une autre
std::sort(v.begin(), v.end());
// Le tri est réalisé en place
// std::sort prend un troisième paramètre template permettant de redéfinir
la relation d'ordre.
// Par défaut, il s'agit d'un std::less qui exploite operator< du type à
trier s'il est défini.
}
Et pour plus de détails :
http://www.cuj.com/documents/sy92/cujcexp1908austern/
Patrick Mézard a utilisé son clavier pour écrire :
j'ai un vector d'entier de dimension n, non trié. J'aimerai le trier selon la relation d'ordre <, d'une manière efficace, tant au niveau du nbre de lignes de codes, qu'au niveau complexité de l'algorithme.
J'ai donc pensé a la stl, comment pourrais-je donc faire ça ?
Si tu veux trier tes entiers (en supposant que tu parles de types de base comme int ou long) selon la relation < par défaut :
#include <vector> #include <algorithm>
int main(int argc, char* argv[]) { std::vector<int> v;
//Le vector est rempli ici d'une manière ou d'une autre
std::sort(v.begin(), v.end());
// Le tri est réalisé en place // std::sort prend un troisième paramètre template permettant de redéfinir la relation d'ordre. // Par défaut, il s'agit d'un std::less qui exploite operator< du type à trier s'il est défini. }
Et pour plus de détails : http://www.cuj.com/documents/sy92/cujcexp1908austern/
// std::sort prend un troisième paramètre template permettant de redéfinir la relation d'ordre. // Par défaut, il s'agit d'un std::less qui exploite operator< du type à trier s'il est défini.
Non, il y a deux fonctions sort. La première utilise directement < et l'autre prend la relation d'ordre. Il n'y a pas de less impliqué (c'était indiqué ainsi dans le livre de BS mais je lui ai fait remarquer l'erreur qui est maintenant corrigée dans les plus récentes versions de son livre). Tu peux vérifier en faisant une fonction less sémantiquement différente de ta fonction < pour un type : c'est le < qui sera utilisé.
Par ailleurs, il y a aussi une fonction stable_sort (deux en fait pour permettre aussi de fournir l'ordre désiré) qui préserve l'ordre des éléments qui sont égaux selon la comparaison, ce qui est parfois utile.
-- Michel Michaud http://www.gdzid.com FAQ de fr.comp.lang.c++ : http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
Dans news:bt6pqi$top$1@news-reader1.wanadoo.fr, Patrick
// std::sort prend un troisième paramètre template permettant de
redéfinir la relation d'ordre.
// Par défaut, il s'agit d'un std::less qui exploite operator< du
type à trier s'il est défini.
Non, il y a deux fonctions sort. La première utilise directement
< et l'autre prend la relation d'ordre. Il n'y a pas de less
impliqué (c'était indiqué ainsi dans le livre de BS mais je lui
ai fait remarquer l'erreur qui est maintenant corrigée dans les
plus récentes versions de son livre). Tu peux vérifier en
faisant une fonction less sémantiquement différente de ta
fonction < pour un type : c'est le < qui sera utilisé.
Par ailleurs, il y a aussi une fonction stable_sort (deux en fait
pour permettre aussi de fournir l'ordre désiré) qui préserve
l'ordre des éléments qui sont égaux selon la comparaison, ce qui
est parfois utile.
--
Michel Michaud mm@gdzid.com
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
// std::sort prend un troisième paramètre template permettant de redéfinir la relation d'ordre. // Par défaut, il s'agit d'un std::less qui exploite operator< du type à trier s'il est défini.
Non, il y a deux fonctions sort. La première utilise directement < et l'autre prend la relation d'ordre. Il n'y a pas de less impliqué (c'était indiqué ainsi dans le livre de BS mais je lui ai fait remarquer l'erreur qui est maintenant corrigée dans les plus récentes versions de son livre). Tu peux vérifier en faisant une fonction less sémantiquement différente de ta fonction < pour un type : c'est le < qui sera utilisé.
Par ailleurs, il y a aussi une fonction stable_sort (deux en fait pour permettre aussi de fournir l'ordre désiré) qui préserve l'ordre des éléments qui sont égaux selon la comparaison, ce qui est parfois utile.
-- Michel Michaud http://www.gdzid.com FAQ de fr.comp.lang.c++ : http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/