back_insert_iterator, classe
Décrit un adaptateur d’itérateur qui répond aux exigences d’un itérateur de sortie. Elle insère, plutôt que remplace, des éléments de la fin d'une séquence et fournit ainsi une sémantique différente de la sémantique de remplacement fournie par les itérateurs des conteneurs de la séquence C++. La classe back_insert_iterator
est mise en modèle d'après le type de conteneur.
Syntaxe
template <class Container>
class back_insert_iterator;
Paramètres
Conteneur
Type de conteneur à la fin duquel des éléments doivent être insérés par un back_insert_iterator
.
Notes
Le conteneur doit répondre aux exigences d’une insertion de fin de séquence où il est possible d’insérer des éléments à la fin de la séquence dans le temps fixe amorti. Les conteneurs de séquences de bibliothèque C++ Standard définis par la classe deque, la classe list et la classe vector fournissent la fonction membre push_back
nécessaire et répondent aux exigences. Ces trois conteneurs et chaînes peuvent chacun être adaptés à l’utilisation avec back_insert_iterator
s. Un back_insert_iterator
doit toujours être initialisé avec son conteneur.
Constructeurs
Constructeur | Description |
---|---|
back_insert_iterator | Construit back_insert_iterator qui insère des éléments après le dernier élément d'un conteneur. |
Typedefs
Nom de type | Description |
---|---|
container_type | Type qui fournit un conteneur pour le back_insert_iterator . |
référence | Type qui fournit une référence pour le back_insert_iterator . |
Opérateurs
Opérateur | Description |
---|---|
operator* | Opérateur de suppression de référence utilisé pour implémenter l’expression d’itérateur de sortie * i = x pour une insertion de fin. |
operator++ | Incrémente le back_insert_iterator à l'emplacement suivant où une valeur peut être stockée. |
operator= | Opérateur d’assignation utilisé pour implémenter l’expression d’itérateur de sortie * i = x pour une insertion de fin. |
Spécifications
En-tête : <itérateur>
Espace de noms : std
back_insert_iterator ::back_insert_iterator
Construit back_insert_iterator
qui insère des éléments après le dernier élément d'un conteneur.
explicit back_insert_iterator(Container& _Cont);
Paramètres
_Suite
Conteneur dans lequel back_insert_iterator
doit insérer un élément.
Valeur de retour
back_insert_iterator
pour le paramètre container.
Exemple
// back_insert_iterator_back_insert_iterator.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main( )
{
using namespace std;
int i;
vector<int> vec;
for ( i = 1 ; i < 4 ; ++i )
{
vec.push_back ( i );
}
vector <int>::iterator vIter;
cout << "The initial vector vec is: ( ";
for ( vIter = vec.begin ( ) ; vIter != vec.end ( ); vIter++)
cout << *vIter << " ";
cout << ")." << endl;
// Insertions with member function
back_inserter ( vec ) = 40;
back_inserter ( vec ) = 50;
// Alternatively, insertions can be done with template function
back_insert_iterator<vector<int> > backiter ( vec );
*backiter = 600;
backiter++;
*backiter = 700;
cout << "After the insertions, the vector vec is: ( ";
for ( vIter = vec.begin ( ) ; vIter != vec.end ( ); vIter++)
cout << *vIter << " ";
cout << ")." << endl;
}
The initial vector vec is: ( 1 2 3 ).
After the insertions, the vector vec is: ( 1 2 3 40 50 600 700 ).
back_insert_iterator ::container_type
Type qui fournit un conteneur pour le back_insert_iterator
.
typedef Container
container_type;
Notes
Le type est un synonyme du paramètre de modèle Container.
Exemple
// back_insert_iterator_container_type.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main( )
{
using namespace std;
int i;
vector<int> vec;
for (i = 1 ; i < 4 ; ++i )
{
vec.push_back ( i );
}
vector <int>::iterator vIter;
cout << "The original vector vec is: ( ";
for ( vIter = vec.begin ( ) ; vIter != vec.end ( ); vIter++)
cout << *vIter << " ";
cout << ")." << endl;
back_insert_iterator<vector<int> >::container_type vec1 = vec;
back_inserter ( vec1 ) = 40;
cout << "After the insertion, the vector is: ( ";
for ( vIter = vec1.begin ( ) ; vIter != vec1.end ( ); vIter++)
cout << *vIter << " ";
cout << ")." << endl;
}
The original vector vec is: ( 1 2 3 ).
After the insertion, the vector is: ( 1 2 3 40 ).
back_insert_iterator ::operator*
Opérateur de déreferencing utilisé pour implémenter l’expression itérateur de sortie * i = x.
back_insert_iterator<Container>& operator*();
Valeur de retour
Référence à l’élément inséré à la fin du conteneur.
Notes
Utilisé pour implémenter l’expression d’itérateur de sortie *Valeur Iter = . Si Iter est un itérateur qui traite un élément dans une séquence, la valeur *Iter = remplace cet élément par valeur et ne modifie pas le nombre total d’éléments de la séquence.
Exemple
// back_insert_iterator_back_insert.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main( )
{
using namespace std;
int i;
vector<int> vec;
for (i = 1 ; i < 4 ; ++i )
{
vec.push_back ( i );
}
vector <int>::iterator vIter;
cout << "The vector vec is: ( ";
for ( vIter = vec.begin ( ) ; vIter != vec.end ( ); vIter++)
cout << *vIter << " ";
cout << ")." << endl;
back_insert_iterator<vector<int> > backiter ( vec );
*backiter = 10;
backiter++; // Increment to the next element
*backiter = 20;
backiter++;
cout << "After the insertions, the vector vec becomes: ( ";
for ( vIter = vec.begin ( ) ; vIter != vec.end ( ); vIter++)
cout << *vIter << " ";
cout << ")." << endl;
}
The vector vec is: ( 1 2 3 ).
After the insertions, the vector vec becomes: ( 1 2 3 10 20 ).
back_insert_iterator ::operator++
Incrémente le back_insert_iterator
à l'emplacement suivant où une valeur peut être stockée.
back_insert_iterator<Container>& operator++();
back_insert_iterator<Container> operator++(int);
Valeur de retour
back_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
// back_insert_iterator_op_incre.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main( )
{
using namespace std;
int i;
vector<int> vec;
for (i = 1 ; i < 3 ; ++i )
{
vec.push_back ( 10 * i );
}
vector <int>::iterator vIter;
cout << "The vector vec is: ( ";
for ( vIter = vec.begin ( ) ; vIter != vec.end ( ); vIter++)
cout << *vIter << " ";
cout << ")." << endl;
back_insert_iterator<vector<int> > backiter ( vec );
*backiter = 30;
backiter++; // Increment to the next element
*backiter = 40;
backiter++;
cout << "After the insertions, the vector vec becomes: ( ";
for ( vIter = vec.begin ( ) ; vIter != vec.end ( ); vIter++)
cout << *vIter << " ";
cout << ")." << endl;
}
The vector vec is: ( 10 20 ).
After the insertions, the vector vec becomes: ( 10 20 30 40 ).
back_insert_iterator ::operator=
Ajoute ou pousse une valeur à la fin d’un conteneur.
back_insert_iterator<Container>& operator=(typename Container::const_reference val);
back_insert_iterator<Container>& operator=(typename Container::value_type&& val);
Paramètres
val
Valeur à insérer dans le conteneur.
Valeur de retour
Référence au dernier élément inséré à la fin du conteneur.
Notes
Le premier opérateur membre évalue Container.push_back( val)
,
puis retourne *this
. Le deuxième opérateur membre évalue
container->push_back((typename Container::value_type&&)val)
,
puis retourne *this
.
Exemple
// back_insert_iterator_op_assign.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main( )
{
using namespace std;
int i;
vector<int> vec;
for (i = 1 ; i < 4 ; ++i )
{
vec.push_back ( i );
}
vector <int>::iterator vIter;
cout << "The vector vec is: ( ";
for ( vIter = vec.begin ( ) ; vIter != vec.end ( ); vIter++)
cout << *vIter << " ";
cout << ")." << endl;
back_insert_iterator<vector<int> > backiter ( vec );
*backiter = 10;
backiter++; // Increment to the next element
*backiter = 20;
backiter++;
cout << "After the insertions, the vector vec becomes: ( ";
for ( vIter = vec.begin ( ) ; vIter != vec.end ( ); vIter++)
cout << *vIter << " ";
cout << ")." << endl;
}
back_insert_iterator ::reference
Type qui fournit une référence pour le back_insert_iterator
.
typedef typename Container::reference reference;
Notes
Le type décrit une référence à un élément de la séquence contrôlée par le conteneur associé.
Exemple
// back_insert_iterator_reference.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main( )
{
using namespace std;
int i;
vector<int> vec;
for (i = 1 ; i < 4 ; ++i )
{
vec.push_back ( i );
}
vector <int>::iterator vIter;
cout << "The vector vec is: ( ";
for ( vIter = vec.begin ( ) ; vIter != vec.end ( ); vIter++)
cout << *vIter << " ";
cout << ")." << endl;
back_insert_iterator<vector<int> >::reference
RefLast = *(vec.end ( ) - 1 );
cout << "The last element in the vector vec is: "
<< RefLast << "." << endl;
}
The vector vec is: ( 1 2 3 ).
The last element in the vector vec is: 3.
Voir aussi
<iterator>
Sécurité des threads dans la bibliothèque C++ Standard
Informations de référence sur la bibliothèque standard C++