Partager via


front_insert_iterator, classe

Décrit un adaptateur d’itérateur qui répond aux exigences d’un itérateur de sortie. Il insère, au lieu de remplacer, les éléments dans le devant d’une séquence. Il fournit ainsi une sémantique différente de la sémantique de remplacement fournie par les itérateurs des conteneurs de séquence C++. La classe front_insert_iterator est mise en modèle d'après le type de conteneur.

Syntaxe

template <class Container>
class front_insert_iterator;

Paramètres

Conteneur
Type de conteneur au début duquel des éléments doivent être insérés par un front_insert_iterator.

Notes

Le conteneur doit répondre aux exigences d’une insertion de début de séquence où il est possible d’insérer des éléments au début de la séquence dans le temps fixe amorti. Les conteneurs de séquence de bibliothèque C++ Standard définis par la classe deque et la classe list fournissent la fonction membre push_front nécessaire et répondent à ces exigences. En revanche, les conteneurs de séquences définis par la classe vectorielle ne répondent pas à ces exigences et ne peuvent pas être adaptés à l’utilisation avec front_insert_iterators. Un front_insert_iterator doit toujours être initialisé avec son conteneur.

Constructeurs

Constructeur Description
front_insert_iterator Crée un itérateur qui peut insérer des éléments au début d'un objet conteneur spécifié.

Typedefs

Nom de type Description
container_type Type qui représente le conteneur dans lequel une insertion de début doit être effectuée.
référence Type qui fournit une référence à un élément dans une séquence contrôlée par le conteneur associé.

Opérateurs

Opérateur Description
operator* Opérateur de suppression de référence utilisé pour implémenter l’expression de l’itérateur de sortie * i = x pour une insertion de début.
operator++ Incrémente le front_insert_iterator à l'emplacement suivant où une valeur peut être stockée.
operator= Opérateur d’assignation servant à implémenter l’expression de l’itérateur de sortie * i = x pour une insertion de début.

Spécifications

En-tête : <itérateur>

Espace de noms : std

front_insert_iterator ::container_type

Type qui représente le conteneur dans lequel une insertion de début doit être effectuée.

typedef Container container_type;

Notes

Le type est un synonyme du paramètre de modèle Container.

Exemple

// front_insert_iterator_container_type.cpp
// compile with: /EHsc
#include <iterator>
#include <list>
#include <iostream>

int main( )
{
   using namespace std;

   list<int> L1;
   front_insert_iterator<list<int> >::container_type L2 = L1;
   front_inserter ( L2 ) = 20;
   front_inserter ( L2 ) = 10;
   front_inserter ( L2 ) = 40;

   list <int>::iterator vIter;
   cout << "The list L2 is: ( ";
   for ( vIter = L2.begin ( ) ; vIter != L2.end ( ); vIter++)
      cout << *vIter << " ";
   cout << ")." << endl;
}
/* Output:
The list L2 is: ( 40 10 20 ).
*/

front_insert_iterator ::front_insert_iterator

Crée un itérateur qui peut insérer des éléments au début d'un objet conteneur spécifié.

explicit front_insert_iterator(Container& _Cont);

Paramètres

_Suite
Objet de conteneur dans lequel front_insert_iterator doit insérer des éléments.

Valeur de retour

front_insert_iterator pour l’objet conteneur du paramètre.

Exemple

// front_insert_iterator_front_insert_iterator.cpp
// compile with: /EHsc
#include <iterator>
#include <list>
#include <iostream>

int main( )
{
   using namespace std;
   int i;
   list <int>::iterator L_Iter;

   list<int> L;
   for (i = -1 ; i < 9 ; ++i )
   {
      L.push_back ( 2 * i );
   }

   cout << "The list L is:\n ( ";
   for ( L_Iter = L.begin( ) ; L_Iter != L.end( ); L_Iter++)
      cout << *L_Iter << " ";
   cout << ")." << endl;

   // Using the member function to insert an element
   front_inserter ( L ) = 20;

   // Alternatively, one may use the template function
   front_insert_iterator< list < int> > Iter(L);
*Iter = 30;

   cout << "After the front insertions, the list L is:\n ( ";
   for ( L_Iter = L.begin( ) ; L_Iter != L.end( ); L_Iter++)
      cout << *L_Iter << " ";
   cout << ")." << endl;
}
/* Output:
The list L is:
( -2 0 2 4 6 8 10 12 14 16 ).
After the front insertions, the list L is:
( 30 20 -2 0 2 4 6 8 10 12 14 16 ).
*/

front_insert_iterator ::operator*

Supprime la référence à l’itérateur d’insertion retournant l’élément ciblé.

front_insert_iterator<Container>& operator*();

Valeur de retour

La fonction membre retourne la valeur de l’élément ciblé.

Notes

Utilisé pour implémenter l’expression d’itérateur de sortie *Valeur Iter = . S’il Iter s’agit d’un itérateur qui traite un élément d’une séquence, la valeur *Iter = remplace cet élément par valeur et ne modifie pas le nombre total d’éléments dans la séquence.

Exemple

// front_insert_iterator_deref.cpp
// compile with: /EHsc
#include <iterator>
#include <list>
#include <iostream>

int main( )
{
   using namespace std;
   int i;
   list <int>::iterator L_Iter;

   list<int> L;
   for ( i = -1 ; i < 9 ; ++i )
   {
      L.push_back ( 2 * i );
   }

   cout << "The list L is:\n ( ";
   for ( L_Iter = L.begin( ) ; L_Iter != L.end( ); L_Iter++)
      cout << *L_Iter << " ";
   cout << ")." << endl;

   front_insert_iterator< list < int> > Iter(L);
*Iter = 20;

   // Alternatively, you may use
   front_inserter ( L ) = 30;

   cout << "After the front insertions, the list L is:\n ( ";
   for ( L_Iter = L.begin( ) ; L_Iter != L.end( ); L_Iter++)
      cout << *L_Iter << " ";
   cout << ")." << endl;
}
/* Output:
The list L is:
( -2 0 2 4 6 8 10 12 14 16 ).
After the front insertions, the list L is:
( 30 20 -2 0 2 4 6 8 10 12 14 16 ).
*/

front_insert_iterator ::operator++

Incrémente le back_insert_iterator à l'emplacement suivant où une valeur peut être stockée.

front_insert_iterator<Container>& operator++();

front_insert_iterator<Container> operator++(int);

Valeur de retour

front_insert_iterator qui cible l’emplacement suivant où une valeur peut être stockée.

Notes

Les opérateurs de préincrémentation et de postincrémentation retournent le même résultat.

Exemple

// front_insert_iterator_op_incre.cpp
// compile with: /EHsc
#include <iterator>
#include <list>
#include <iostream>

int main( )
{
   using namespace std;

   list<int> L1;
   front_insert_iterator<list<int> > iter ( L1 );
*iter = 10;
   iter++;
*iter = 20;
   iter++;
*iter = 30;
   iter++;

   list <int>::iterator vIter;
   cout << "The list L1 is: ( ";
   for ( vIter = L1.begin ( ) ; vIter != L1.end ( ); vIter++ )
      cout << *vIter << " ";
   cout << ")." << endl;
}
/* Output:
The list L1 is: ( 30 20 10 ).
*/

front_insert_iterator ::operator=

Ajoute (push) une valeur au début du conteneur.

front_insert_iterator<Container>& operator=(typename Container::const_reference val);

front_insert_iterator<Container>& operator=(typename Container::value_type&& val);

Paramètres

val
Valeur à assigner au conteneur.

Valeur de retour

Référence au dernier élément inséré au début du conteneur.

Notes

Le premier opérateur membre évalue container.push_front( val), puis retourne *this.

Le deuxième opérateur membre évalue

container->push_front((typename Container::value_type&&) val),

puis retourne *this.

Exemple

// front_insert_iterator_op_assign.cpp
// compile with: /EHsc
#include <iterator>
#include <list>
#include <iostream>

int main( )
{
   using namespace std;

   list<int> L1;
   front_insert_iterator<list<int> > iter ( L1 );
*iter = 10;
   iter++;
*iter = 20;
   iter++;
*iter = 30;
   iter++;

   list <int>::iterator vIter;
   cout << "The list L1 is: ( ";
   for ( vIter = L1.begin ( ) ; vIter != L1.end ( ); vIter++ )
      cout << *vIter << " ";
   cout << ")." << endl;
}
/* Output:
The list L1 is: ( 30 20 10 ).
*/

front_insert_iterator ::reference

Type qui fournit une référence à un élément dans une séquence contrôlée par le conteneur associé.

typedef typename Container::reference reference;

Exemple

// front_insert_iterator_reference.cpp
// compile with: /EHsc
#include <iterator>
#include <list>
#include <iostream>

int main( )
{
   using namespace std;

   list<int> L;
   front_insert_iterator<list<int> > fiivIter( L );
*fiivIter = 10;
*fiivIter = 20;
*fiivIter = 30;

   list<int>::iterator LIter;
   cout << "The list L is: ( ";
   for ( LIter = L.begin ( ) ; LIter != L.end ( ); LIter++)
      cout << *LIter << " ";
   cout << ")." << endl;

   front_insert_iterator<list<int> >::reference
        RefFirst = *(L.begin ( ));
   cout << "The first element in the list L is: "
        << RefFirst << "." << endl;
}
/* Output:
The list L is: ( 30 20 10 ).
The first element in the list L is: 30.
*/

Voir aussi

<iterator>
Sécurité des threads dans la bibliothèque C++ Standard
Informations de référence sur la bibliothèque standard C++