std::sort() sur std::vector()
	
	
		Bonjour, 
soit un std::vector:  
	Code:
	
| 12
 
 | typedef std::vector<Station*> ListStation;
ListStation m_ListStation; | 
 La classe Station est une classe que j'ai défini.
Je veux trier le vector, pour cela je fais : 
	Code:
	
| 12
 
 |  
std::sort( m_ListStation.begin(), m_ListStation.end(), stationPtrCompare ); | 
 la fonction stationPtrCompare() est déclarée comme ceci : 
	Code:
	
bool stationPtrCompare( Station* p1, Station* p2 )
 elle est de portée globale.
Bon, ça compile, no problemo. 
MAIS, quand j'exécute ça plante : "access violation". 
En utilisant le debugger (Visual C++ 6.0), je vois que ma fonction stationPtrCompare() est appelée avec p1==0xcdcdcdcd. 
Hum, ça sent le pointeur pourri.
Donc, juste avant d'appeler std::sort, je dumpe le contenu de mon vector, comme ceci : 
	Code:
	
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 
 |  
/*! sort the station collection */
void StationCollection::sortStationCollection()
{
	// TEST JULIEN
	char Buff[255];
	for (int i=0; i<m_ListStation.size(); i++)
	{
		sprintf( Buff, "m_ListStation[%d]=%X\n",i,m_ListStation[i]);
		TRACE(Buff);
	}
 
 
	std::sort( m_ListStation.begin(), m_ListStation.end(), stationPtrCompare );
} | 
 je sais, sprintf()/char[] c'est du C, mais, c'est du code de débuggage.
Bref, le pointeur 0xcdcdcdcd ne se trouve pas dans mon vector juste avant l'appel à std::sort.
Je ne comprends pas pourquoi ma fonction stationPtrCompare() est appelée avec cette valeur bizarre. 
Ca m'étonnerait très fortement que la STL fournie avec Visual C++ 6.0 soit buggée sur un truc aussi utilisé que cela.
Des idées ?  :?:
	 
	
	
	
		Re: std::sort() sur std::vector()
	
	
		
	Citation:
	
		
		
			
				Envoyé par tut
				
			
			Ca m'étonnerait très fortement que la STL fournie avec Visual C++ 6.0 soit buggée sur un truc aussi utilisé que cela.
			
		
	 
 Il y a pourtant des bugs sur des trucs si utilisés (mais je ne sais pas si ça s'applique à ton cas). Chez moi, trier un grand vecteur revenait à le tronquer. Après avoir appliqué les conseils trouvés là : http://www.dinkumware.com/vc_fixes.html ca c'est mieux passé.