| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 
 | template <typename INDICE, typename TYPE> 
void ListeTriee<INDICE,TYPE>::Ajouter(INDICE Indice, boost::shared_ptr<TYPE> Element)
{
	boost::shared_ptr<INDICE> IndicePtr(new INDICE);
	*IndicePtr = Indice;
	Liste<TYPE>::Ajouter(Element,FIN);
	Indices->Ajouter(IndicePtr, FIN);
	int cpt = Taille-1;
	while (cpt >= 0 && cpt < Taille)
	{ // si l'indice n° cpt a une valeur supérieure à l'indice n° cpt+1
	  if (*(Indices->GetIndice(cpt)) > *(Indices->GetIndice(cpt+1)) )
	  { // Alors on échange les valeurs des indices et les valeurs des éléments correspondants.
	     Indices->GetIndice(cpt).swap( Indices->TableauDeReference[cpt+1] );
	     this->TableauDeReference[cpt].swap( this->TableauDeReference[cpt+1] );
	  }
	  else
	  { // Si ce n'est pas le cas, c'est que le tri est fini ; on sort de la boucle.
	     break;
	  }
	  // Puis c'est reparti pour un tour.
	  --cpt;
	}
	// La taille de notre liste est donc bien égale à Taille+1 maintenant.
	++Taille;
} |