Bonjour,
En programmant sur mon projet, je me suis heurté à une spécificité de la STL que j'ai trouvé pour le moins étrange. En utilisant un vector<bool>, je pensais pouvoir récupérer le premier élément en faisant ceci: &vec[0], cependant le standard en a décidé autrement et je pensais qu'il était utile de le spécifier dans la FAQ.
"vector<bool>"
Le standard de la norme de C++ a décidé d'optimiser le stockage des booléens dans un std::vector. Ainsi ne vous attendez pas à pouvoir récupérer facilement le un std::vector<bool> via &vec[0]. En effet, ce dernier garde en mémoire les booléens bits à bits.
Il est possible de passer au travers de cette optimisation plus ou moins bancale (cela peut créer des comportement indéterminés dans les programmes pour ceux qui ne savent pas), vous pouvez spécifier un nouvel allocateur en faisant:
typedef std::vector<bool, myallocator> vectorbool;
Bon j'espère que vous trouverez aussi cette information utile, et j'espère qu'elle n'y est pas déjà! Pour plus d'information: Lien

 

 
		
		 
        

 
			
			


 
			 
   


 [FAQ] vector<bool>, spécialisation du standard
 [FAQ] vector<bool>, spécialisation du standard
				 Répondre avec citation
  Répondre avec citation



 
 
 
						 
			


 
  
  
  
			 Envoyé par Goten
 Envoyé par Goten
					
Partager