[RESOLU] SplHeap extrait d'abord le premier résultat inséré

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] SplHeap extrait d'abord le premier résultat inséré

Re: SplHeap extrait d'abord le premier résultat inséré

par carte-sd » 14 févr. 2017, 12:22

Salut,
En fait j'ai compris mon erreur, elle provenait de la fonction compare() que je pensais optionnelle pour me servir de la classe comme un simple tas - je voulais m'en servir pour faire un task runner -.
Je post quand même la solution:

Code : Tout sélectionner

class myHeap extends SplHeap{ public function compare($a,$b){ if($a === $b): return 0; endif; return $a < $b ? -1 : 1; } }
Quant à la classe SplStack elle n'a pas la même fonction, c'est plutôt un itérateur qui sert à utiliser un objet comme un tableau (d'où son implémentation de l'interface ArrayAccess).

Re: SplHeap extrait d'abord le premier résultat inséré

par @rthur » 14 févr. 2017, 10:38

Bonjour,

Je n'ai jamais utilisé SplHeap mais à première vue je dirai qu'un tas est différent d'une pile, c'est pas plutôt SplStack qu'il faudrait que tu utilises pour avoir le résultat attendu ?

SplHeap extrait d'abord le premier résultat inséré

par carte-sd » 13 févr. 2017, 19:53

Bonsoir,
Je suis sous PHP 7.1 et je pense avoir découvert un bug, pouvez-vous me donner votre avis ?

Code : Tout sélectionner

class myHeap extends SplHeap{ public function compare(){} } $myHeap = new myHeap; $myHeap->insert('A'); $myHeap->insert('B'); $myHeap->insert('C'); $myHeap->insert('D'); var_dump($myHeap->extract(),$myHeap->extract(),$myHeap->extract(),$myHeap->extract()); // A D C B
SplHeap est sensé se comporter comme un tas, pourquoi il extrait d'abord A ?