- //Ce container est une liste chainee d'elements.
- //Nous ne disposons plus d'un acces indexe,
- //mais par contre, des insertions
- //et suppression sont possibles.
-
- #include <stdio.h>
- #include <list>
- int main(int argc, char ** argv){
-
- //**********************************************
- // TECHNIQUE DE BASE
- //**********************************************
-
- //commencons par creer une liste d'entiers :
- std::list<int> listInt;
-
- //nous pouvons ajouter des valeurs en queue de liste
- listInt.push_back( 1 );
- listInt.push_back( 2 );
- listInt.push_back( 3 );
-
- //ou en tete de liste
- listInt.push_front( 4 );
- listInt.push_front( 5 );
- listInt.push_front( 6 );
-
- //pour parcourir cette liste, nous avons besoin d'un iterateur.
- //On peut voir cet objet comme un pointeur sur le type element.
-
- //declarons un iterateur sur une liste d'entiers
- std::list<int>::iterator iter;
-
- //on assigne iter au debut de la liste
- iter = listInt.begin();
-
- //on itere ...
- for( ; iter != listInt.end(); iter++ ){
- printf("%i\n", *iter); // *iter est du type element, donc du type int
- }
-
-
- //**********************************************
- // UTILISATION AVANCEE
- //**********************************************
-
- //comme pour les tableaux, nous pouvons creer des liste d'element de
- //n'importe quel type... ex : une liste de flottants
- // std::list<float> listFloat;
-
- //suppression d'un element de la liste :
-
- //on choisis le 2em element de la liste
- iter = listInt.begin();
- iter++;
-
- //on le supprime
- listInt.erase( iter );
- //Attention : iter a ete modifie par la fonction erase
-
- //on affiche la liste
- printf("\nApres suppression du 2 em element\n");
- for(iter = listInt.begin(); iter != listInt.end(); iter++ )
- printf("%i\n", *iter);
-
-
- //on va ajouter un element en 2em position :
- iter = listInt.begin();
- iter++;
-
- //on ajoute l'element :
- listInt.insert(iter, -2);
-
- //on affiche la liste
- printf("\nApres ajout de -2 en 2em position\n");
- for(iter = listInt.begin(); iter != listInt.end(); iter++ )
- printf("%i\n", *iter);
-
-
- //on trie la liste (cf remarques)
- listInt.sort();
-
- //on affiche la liste
- printf("\nApres tri de la liste\n");
- for(iter = listInt.begin(); iter != listInt.end(); iter++ )
- printf("%i\n", *iter);
-
- //on vide la liste
- listInt.clear();
-
- //on test si elle est bien vide
- if (listInt.empty()){
- printf("\nListe videe\n", *iter);
- }
- else{
- printf("\nHum, j'y crois pas de trop !\n", *iter);
- }
-
-
- return 0;
- }
- //neiger@ifrance.com
//Ce container est une liste chainee d'elements.
//Nous ne disposons plus d'un acces indexe,
//mais par contre, des insertions
//et suppression sont possibles.
#include <stdio.h>
#include <list>
int main(int argc, char ** argv){
//**********************************************
// TECHNIQUE DE BASE
//**********************************************
//commencons par creer une liste d'entiers :
std::list<int> listInt;
//nous pouvons ajouter des valeurs en queue de liste
listInt.push_back( 1 );
listInt.push_back( 2 );
listInt.push_back( 3 );
//ou en tete de liste
listInt.push_front( 4 );
listInt.push_front( 5 );
listInt.push_front( 6 );
//pour parcourir cette liste, nous avons besoin d'un iterateur.
//On peut voir cet objet comme un pointeur sur le type element.
//declarons un iterateur sur une liste d'entiers
std::list<int>::iterator iter;
//on assigne iter au debut de la liste
iter = listInt.begin();
//on itere ...
for( ; iter != listInt.end(); iter++ ){
printf("%i\n", *iter); // *iter est du type element, donc du type int
}
//**********************************************
// UTILISATION AVANCEE
//**********************************************
//comme pour les tableaux, nous pouvons creer des liste d'element de
//n'importe quel type... ex : une liste de flottants
// std::list<float> listFloat;
//suppression d'un element de la liste :
//on choisis le 2em element de la liste
iter = listInt.begin();
iter++;
//on le supprime
listInt.erase( iter );
//Attention : iter a ete modifie par la fonction erase
//on affiche la liste
printf("\nApres suppression du 2 em element\n");
for(iter = listInt.begin(); iter != listInt.end(); iter++ )
printf("%i\n", *iter);
//on va ajouter un element en 2em position :
iter = listInt.begin();
iter++;
//on ajoute l'element :
listInt.insert(iter, -2);
//on affiche la liste
printf("\nApres ajout de -2 en 2em position\n");
for(iter = listInt.begin(); iter != listInt.end(); iter++ )
printf("%i\n", *iter);
//on trie la liste (cf remarques)
listInt.sort();
//on affiche la liste
printf("\nApres tri de la liste\n");
for(iter = listInt.begin(); iter != listInt.end(); iter++ )
printf("%i\n", *iter);
//on vide la liste
listInt.clear();
//on test si elle est bien vide
if (listInt.empty()){
printf("\nListe videe\n", *iter);
}
else{
printf("\nHum, j'y crois pas de trop !\n", *iter);
}
return 0;
}
//neiger@ifrance.com