Question sur la STL : queue

Question sur la STL : queue - C++ - Programmation

Marsh Posté le 20-01-2012 à 11:15:36    

Bonjour,

 

J'aimerais savoir pourquoi ceci marche :

 
Code :
  1. std::queue<int, std::deque<int> > q;
  2. q.push(1);
  3. q.pop();
  4. q.pop(); // ok
 

et là, ça crashe ...

 
Code :
  1. std::queue<int, std::list<int> > q; //on utilise une liste comme container sous jacent
  2. q.push(1);
  3. q.pop();
  4. q.pop(); // boom !!! been tango'd
 

Je pige pas ...

 

merci :=)


Message édité par in_your_phion le 20-01-2012 à 16:49:25
Reply

Marsh Posté le 20-01-2012 à 11:15:36   

Reply

Marsh Posté le 20-01-2012 à 12:05:33    

Mon instinct me dit que le schema d'allocation de deque fait que ca "tombe en marche".

Reply

Marsh Posté le 20-01-2012 à 16:47:28    

Joel F a écrit :

Mon instinct me dit que le schema d'allocation de deque fait que ca "tombe en marche".


 
Hello,
Merci, en fait j'ai vu l'erreur exactement mais je ne sais pas pourquoi  :??:  
 
c'est une erreur qui n'arrive que en mode debug, en gros il y a une assertion qui échoue quand on fait un pop() sur une liste vide. Alors que pour la deque, ça ne pose pas de problème.
 
Par contre j'ai pas compris pourquoi ça marche pour la deque et pas pour la liste ??

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed