Ordinateurs

Exemples d’insertion () de liste standard C++

Je suis un ingénieur logiciel. Je travaille avec les technologies C++, MFC et .net depuis 15 ans. J’aime les jeux vidéo et lire des livres.

Nous pouvons utiliser l’insertion de liste standard pour ajouter des éléments à une liste existante.

1. Introduction

la « insérer() » fonction de la liste standard est utilisée pour insérer de nouveaux éléments dans la liste existante. Lors de l’insertion d’un nouvel élément, nous devons spécifier la position et la valeur. Nous allons voir un exemple pour chaque surcharge disponible ici une par une.

2. Fonctions de support pour cet article

Avant de passer à notre exemple, voyons deux fonctions d’assistance qui seront utilisées tout au long de cet exemple. La fonction Add_ListElements() est écrite pour ajouter des éléments par défaut à la liste. Il ajoute 1,2,3,4,5,6 à la liste. Ci-dessous la fonction.

Liste 1.1

//ListInsert 01: Function to Push some values to List
void Add_ListElements(list& listParam)
{
	listParam.clear();
	listParam.push_back(1);
	listParam.push_back(2);
	listParam.push_back(3);
	listParam.push_back(4);
	listParam.push_back(5);
	listParam.push_back(6);
}

La fonction Print_List() parcourt la liste fournie et imprime le contenu dans la fenêtre de sortie de la console. Ci-dessous la fonction.

Liste 1.2

//ListInsert 02: Function to Print the Values in List
void Print_List(list listParam)
{
	list::iterator listItr;
	printf("\nThe contents of the Lists are:\n");
	for (listItr = listParam.begin();
		listItr != listParam.end();
		listItr++)
		printf("[%d] ", *listItr);
}

3. Insertion d’un seul élément dans une liste

Pour insérer un seul élément dans la liste, nous devons utiliser la surcharge spécifiée ci-dessous de la fonction insert :

itérateur insert(const_iterator _Où_Ty&& _Val)

Ici, le paramètre « _Where » attend la position dans laquelle le nouvel élément doit être inséré. Le deuxième paramètre _Val est la valeur que nous voulons insérer. Jetez maintenant un œil à ce morceau de code.

Liste 1.3

//3.1 Create list and iterator
list theList;
Add_ListElements(theList);
Print_List(theList);

//3.2 Position the Iterator for Insertion
list::iterator Position;
Position = theList.begin();
Position++;
Position++;

//3.3 Insert an element and print the list
printf("\nAfter inserting the Single Element,");
Position = theList.insert(Position, 7);
Print_List(theList);

Dans le code en 3.1, nous avons créé la liste et y avons ajouté six éléments par défaut en appelant la fonction Add_ListElements() (Listing 1.1). Ensuite, nous avons imprimé le contenu de la liste.

Dans le code en 3.2, nous avons obtenu l’itérateur pour la liste en appelant la fonction begin() et l’avons déplacé deux fois par étapes en effectuant l’opération d’incrémentation ++. Maintenant, l’itérateur pointe sur le troisième élément 3. Ceci est illustré dans la description ci-dessous.

Insertion d'un seul élément dans la liste standard

Insertion d’un seul élément dans la liste standard

Dans le code vu en 3.3, nous appelons la fonction insert en fournissant la position et la valeur, qui est 7. L’appel va ajouter un nouvel élément à la position courante et décaler les éléments restants vers la droite de celle-ci. Dans l’image ci-dessus, l’élément nouvellement inséré est affiché en vert et les éléments décalés sont affichés en jaune.

4. Insertion de plusieurs éléments

La fonction d’insertion de la liste standard attend trois paramètres pour y insérer plusieurs éléments. Le premier paramètre indique la position dans la liste à partir de laquelle l’insertion commence. Le deuxième paramètre indique comment les éléments doivent être insérés. Le troisième paramètre est la valeur réelle qui doit être insérée. L’image ci-dessous montre l’insertion de trois éléments de valeur 11 à la position qui est donnée comme premier paramètre.

Std ::list ::Insert() pour insérer plusieurs valeurs

Std ::list ::Insert() pour insérer plusieurs valeurs

Faites défiler pour continuer

Notez que même si nous insérons plusieurs valeurs, toutes les valeurs sont identiques et occupent un emplacement contigu dans la liste. Maintenant, regardez l’exemple de code ci-dessous.

Liste 1.4

//3.4 Insert multiple elements from current position
printf("\nAfter inserting the three Elements(Val 11),");
Position = theList.insert(Position, 3, 11);
Print_List(theList);

Ici, à la ligne trois, nous insérons 3 éléments avec la valeur 11. Dans la ligne suivante, nous imprimons la liste dans la fenêtre de sortie de la console. Cette insertion est illustrée ci-dessous.

Insertion de plusieurs éléments dans la liste C++ standard

Insertion de plusieurs éléments dans la liste C++ standard

Notez qu’avant l’appel d’insert, l’itérateur « Position » est à l’élément 7 (troisième position dans la liste). Après l’appel à insert, trois éléments sont ajoutés à cette position et tous les éléments existants dont 7 sont décalés vers la gauche. Les éléments nouvellement ajoutés sont affichés en vert et les éléments décalés sont affichés en jaune.

5. Copier des éléments entre la liste

En utilisant la méthode d’insertion de liste standard, on peut également copier les éléments de la liste à partir d’une autre liste. La liste des paramètres de la fonction est présentée ci-dessous.

Copier des éléments entre la liste - Détails des paramètres

Copier des éléments entre la liste – Détails des paramètres

Le premier paramètre « Position » indique l’emplacement de la copie dans la liste de destination. Les deuxième et troisième paramètres indiquent la position de début et de fin de la liste source et cela indiquera quelle plage d’éléments doit être copiée de la source à la destination. Maintenant, regardez le code ci-dessous.

Liste 1.5

//3.5 Insert Elements from another list (Copy)
//3.5.1 Create the Source List and set the Iterator
//		position
list SecondList;
Add_ListElements(SecondList);
list::iterator Start = SecondList.begin();
list::iterator End = SecondList.end();
Start++;
Start++;
End--;
End--;

Ici, la liste des sources est préparée pour notre exemple. À la ligne 4,5, une liste est créée et les éléments par défaut 1,2,3,4,5,6 y sont ajoutés. Aux lignes 6 et 7, nous avons saisi l’itérateur de liste qui pointe vers le début et la fin de la liste. À la ligne 8-11, nous avons repositionné les itérateurs de début et de fin afin que seuls deux éléments soient copiés dans la liste de destination.

Regardez maintenant le code ci-dessous qui copie les éléments de la liste de « SecondList ».

Liste 1.6

//3.5.2 Copy the source elements to destination
Position++;
theList.insert(Position, Start, End);
printf("\nAfter inserting the Elements from Second List,");
Print_List(theList);

Notez que nous avons déplacé l’itérateur d’un élément (Ligne 2) depuis sa position actuelle. Reportez-vous à l’image précédente et nous pouvons dire que la position pointe maintenant vers le quatrième élément de la liste. À la ligne 3, nous avons appelé la fonction d’insertion qui effectue en fait une copie de la source à la destination. Ceci est illustré ci-dessous.

Copier des éléments entre la liste C++

Copier des éléments entre la liste C++

Une fois les éléments de la liste copiés, le contenu de la liste de destination est imprimé dans la fenêtre de sortie de la console. L’exemple complet et sa sortie sont présentés ci-dessous.

Exemple terminé

#include 
#include 
#include 

using namespace std;

//ListInsert 01: Function to Push some values to List
void Add_ListElements(list& listParam)
{
	listParam.clear();
	listParam.push_back(1);
	listParam.push_back(2);
	listParam.push_back(3);
	listParam.push_back(4);
	listParam.push_back(5);
	listParam.push_back(6);
}

//ListInsert 02: Function to Print the Values in List
void Print_List(list listParam)
{
	list::iterator listItr;
	printf("\nThe contents of the Lists are:\n");
	for (listItr = listParam.begin();
		listItr != listParam.end();
		listItr++)
		printf("[%d] ", *listItr);
}

//ListInsert 03: Clear List through Remove_if and Predicates
void main()
{
	//3.1 Create list and iterator
	list theList;
	Add_ListElements(theList);
	Print_List(theList);

	//3.2 Position the Iterator for Insertion
	list::iterator Position;
	Position = theList.begin();
	Position++;
	Position++;

	//3.3 Insert an element and print the list
	printf("\nAfter inserting the Single Element,");
	Position = theList.insert(Position, 7);
	Print_List(theList);

	//3.4 Insert multiple elements from current position
	printf("\nAfter inserting the three Elements(Val 11),");
	Position = theList.insert(Position, 3, 11);
	Print_List(theList);

	//3.5 Insert Elements from another list (Copy)
	//3.5.1 Create the Source List and set the Iterator
	//		position
	list SecondList;
	Add_ListElements(SecondList);
	list::iterator Start = SecondList.begin();
	list::iterator End = SecondList.end();
	Start++;
	Start++;
	End--;
	End--;

	//3.5.2 Copy the source elements to destination
	Position++;
	theList.insert(Position, Start, End);
	printf("\nAfter inserting the Elements from Second List,");
	Print_List(theList);

	_getch();
}
Sortie de Sta::List::Insert Example

Sortie de Sta::List::Insert Example

Cet article est exact et fidèle au meilleur de la connaissance de l’auteur. Le contenu est uniquement à des fins d’information ou de divertissement et ne remplace pas un conseil personnel ou un conseil professionnel en matière commerciale, financière, juridique ou technique.

A lire aussi :  8 exemples étonnants de Particles.js à découvrir : la liste ultime
Bouton retour en haut de la page