Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1866 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [STL] Algorithme pour la valeur la plus fréquente d'un conteneur ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[STL] Algorithme pour la valeur la plus fréquente d'un conteneur ?

n°1618408
SkippyleGr​andGourou
Posté le 03-10-2007 à 14:40:13  profilanswer
 

Salut,

 

Je me demandais s'il existait un algorithme de la STL pour déterminer la valeur qui apparaît le plus souvent dans un vecteur ? Genre un truc qui pour {1,3,3,9,9,9,9,10,10} rendrait 9 (ou (9;4) tant qu'à faire...).

 

Merci, en attendant je vais essayer de faire ça avec mes petites mains...

 

NB: Si toute la liste des algorithmes est , alors y'a pas... Mais ça me paraît court comme liste ?

Message cité 1 fois
Message édité par SkippyleGrandGourou le 03-10-2007 à 14:45:44
mood
Publicité
Posté le 03-10-2007 à 14:40:13  profilanswer
 

n°1618618
Joel F
Real men use unique_ptr
Posté le 03-10-2007 à 19:33:44  profilanswer
 

une astucieuse combinaison de std::unique_copy ret de std::count devrait faire l'affaire

n°1618755
SkippyleGr​andGourou
Posté le 04-10-2007 à 11:52:43  profilanswer
 

Effectivement. Malheureusement (et ça semble logique), c'est environ 30 fois plus rapide de faire un truc comme :

Code :
  1. float prev=0;
  2. float offset=0;
  3. int U = 0;
  4. int V = 0;
  5. for (vector<float>::iterator zz=tmp.begin(); zz!=tmp.end(); ++zz)
  6. {
  7. if (*zz==prev)
  8.  ++U;
  9. else
  10. {
  11.  if (U>V)
  12.  {
  13.   offset = prev;
  14.   V = U;
  15.  }
  16.  U = 0;
  17. }
  18. prev=*zz;
  19. }


 
que :

Code :
  1. vector<float> result;
  2. insert_iterator<vector<float> > ins(result,result.end());
  3. unique_copy(tmp.begin(), tmp.end(), ins);
  4. int T = 0;
  5. float Tv = 0;
  6. for (vector<float>::iterator m=result.begin(); m!=result.end(); ++m)
  7. {
  8. int N = count(tmp.begin(),tmp.end(),*m);
  9. if (N>T)
  10. {
  11.  T = N;
  12.  Tv = *m;
  13. }
  14. }


Donc exit la STL pour cette opération...  :hello:  
(À moins qu'il n'y ait plus astucieux, ce qui ne m'étonnerais guère... ;))

n°1618778
Taz
bisounours-codeur
Posté le 04-10-2007 à 12:13:23  profilanswer
 

y a pas de exit STL: faut pas s'étonner. Pour implémenter l'algorithme A, tu utilises l'algorithme B, donc forcément c'est pas les mêmes perfs. Ton besoin est spécifique, donc y a pas. A toi d'etre plus intelligent et d'écrire une version générique

n°1618782
Taz
bisounours-codeur
Posté le 04-10-2007 à 12:16:39  profilanswer
 

à implémenter avec un for_each, ça doit donner quelque chose de tranquil

n°1618820
Joel F
Real men use unique_ptr
Posté le 04-10-2007 à 13:14:06  profilanswer
 

for_each est obligatoire ici, sinon c'est pas la peine. Aprés, unique me parait mieux que unique_copy.

n°1625957
Giz
Posté le 17-10-2007 à 21:24:48  profilanswer
 

SkippyleGrandGourou a écrit :

Salut,
 
Je me demandais s'il existait un algorithme de la STL pour déterminer la valeur qui apparaît le plus souvent dans un vecteur ? Genre un truc qui pour {1,3,3,9,9,9,9,10,10} rendrait 9 (ou (9;4) tant qu'à faire...).
 
Merci, en attendant je vais essayer de faire ça avec mes petites mains...
 
NB: Si toute la liste des algorithmes est , alors y'a pas... Mais ça me paraît court comme liste ?


 
 
Si ton tableau est déjà trié c qd meme pas sorcier  :sarcastic:


---------------
Asus P5Q Pro | C2D E8400 3GHz@4GHz + Noctua NH-C12P | 2x2Go Patriot Extreme PC-8500 | GeForce GTX 460@Stock 1Go GLH | Crucial SSD M4 64Go Sata3

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [STL] Algorithme pour la valeur la plus fréquente d'un conteneur ?

 

Sujets relatifs
Algorithme parallélisé: Je n'arrive pas à l'écrire avec fork()afficher valeur checkbox dans champ de saisie
changement de valeur pour toutes les lignes, Aidez moi SVPAcceder à une valeur présente dans un formulaire
QT vs STL/Boostextraire une valeur d'un tableau en retour de fonction
[VBA] récupérer valeur couleur automatique[java] algorithme du simplexe
valeur qui ne passent pas en POSTCréer une visualisation graphique pas-à-pas d'une liste de valeur
Plus de sujets relatifs à : [STL] Algorithme pour la valeur la plus fréquente d'un conteneur ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR