insert_iterator (Clase)

 

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

Describe un adaptador de iterador que satisface los requisitos de un iterador de salida. Inserta, en lugar de sobrescribir, elementos en una secuencia y proporciona así la semántica que es diferente de la semántica que sobrescribe proporcionada por los iteradores de la secuencia de C++ y los contenedores asociativos. La clase insert_iterator se hace plantilla en el tipo de contenedor que se adapta.

template <class Container>  
class insert_iterator;

Parámetros

Container
Tipo de contenedor en el que un insert_iterator debe insertar los elementos.

El contenedor de tipo contenedor debe satisfacer los requisitos de un contenedor de tamaño variable y tener una función miembro insert de dos argumentos donde los parámetros son de tipo Container:: Iterator y Container:: value_type y que devuelve un tipo Container:: Iterator. Los contenedores asociativos ordenados y de secuencia de la Biblioteca de plantillas estándar cumplen estos requisitos y pueden adaptarse para su uso con insert_iterator. En los contenedores asociativos, el argumento de posición se trata como una sugerencia, algo que tiene potencial para mejorar o degradar el rendimiento, según la calidad de la sugerencia. Un insert_iterator debe inicializarse siempre con su contenedor.

Constructores

insert_iteratorConstruye insert_iterator que inserta un elemento en una posición especificada de un contenedor.

Definiciones de tipo

container_typeTipo que representa el contenedor en el que se va a crear una inserción general.
referenciaTipo que proporciona una referencia a un elemento de una secuencia controlada por el contenedor asociado.

Operadores

operador *Operador de desreferencia usado para implementar la expresión de iterador de salida * i = x para una inserción general.
operator ++Incrementa el insert_iterator a la siguiente ubicación en la que puede almacenarse un valor.
operador =Operador de asignación usado para implementar la expresión de iterador de salida * i = x para una inserción general.

Encabezado:<>>

Espacio de nombres: std

Tipo que representa el contenedor en el que se va a crear una inserción general.

typedef Container container_type;

Comentarios

El tipo es un sinónimo del parámetro de plantilla contenedor.

Ejemplo

// insert_iterator_container_type.cpp  
// compile with: /EHsc  
#include <iterator>  
#include <list>  
#include <iostream>  
  
int main( )  
{  
   using namespace std;  
  
   list<int> L1;  
   insert_iterator<list<int> >::container_type L2 = L1;  
   inserter ( L2, L2.end ( ) ) = 20;  
   inserter ( L2, L2.end ( ) ) = 10;  
   inserter ( L2, L2.begin ( ) ) = 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 20 10 ).  
*\  

Construye insert_iterator que inserta un elemento en una posición especificada de un contenedor.

insert_iterator(Container& _Cont, typename Container::iterator _It);

Parámetros

_Cont
El contenedor en el que los insert_iterator consiste en Insertar elementos.

_It
La posición de la inserción.

Comentarios

Todos los contenedores tienen la función de miembro de inserción llama a la insert_iterator. En los contenedores asociativos el parámetro de posición es simplemente una sugerencia. La función de la herramienta de inserción proporciona una manera cómoda de insertar valores.

Ejemplo

// insert_iterator_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 < 4 ; ++i )    
   {  
      L.push_back ( 10 * 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  
   inserter ( L, L.begin ( ) ) = 2;  
  
   // Alternatively, you may use the template version  
   insert_iterator< list < int> > Iter(L, L.end ( ) );  
 *Iter = 300;  
  
   cout << "After the 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:  
 ( 10 20 30 ).  
After the insertions, the list L is:  
 ( 2 10 20 30 300 ).  
*\  

Desreferencia el iterador de inserción devuelve que el elemento es de direcciones.

insert_iterator<Container>& operator*();

Valor devuelto

La función miembro devuelve el valor del elemento direccionado.

Comentarios

Utilizado para implementar la expresión de iterador de salida ** *Iter** = valor. Si Iter es un iterador que direcciona un elemento de una secuencia, a continuación, ** *Iter** = valor reemplaza ese elemento con el valor y no cambia el número total de elementos de la secuencia.

Ejemplo

// insert_iterator_op_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 = 0 ; i < 4 ; ++i )    
   {  
      L.push_back ( 2 * i );  
   }  
  
   cout << "The original list L is:\n ( ";  
   for ( L_Iter = L.begin( ) ; L_Iter != L.end( ); L_Iter++ )  
      cout << *L_Iter << " ";  
   cout << ")." << endl;  
  
   insert_iterator< list < int> > Iter(L, L.begin ( ) );  
 *Iter = 10;  
 *Iter = 20;  
 *Iter = 30;  
  
   cout << "After the insertions, the list L is:\n ( ";  
   for ( L_Iter = L.begin( ) ; L_Iter != L.end( ); L_Iter++ )  
      cout << *L_Iter << " ";  
   cout << ")." << endl;  
}  
\* Output:   
The original list L is:  
 ( 0 2 4 6 ).  
After the insertions, the list L is:  
 ( 10 20 30 0 2 4 6 ).  
*\  

Incrementa el insert_iterator a la siguiente ubicación en la que se puede almacenar un valor.

insert_iterator<Container>& operator++();

insert_iterator<Container> operator++(int);

Parámetros

Un insert_iterator direcciona la ubicación siguiente en el que se puede almacenar un valor.

Comentarios

Operadores de preincrementation y postincrementation devuelven el mismo resultado.

Ejemplo

// insert_iterator_op_incr.cpp  
// compile with: /EHsc  
#include <iterator>  
#include <vector>  
#include <iostream>  
  
int main( )  
{  
   using namespace std;  
   int i;  
  
   vector<int> vec;  
   for (i = 1 ; i < 5 ; ++i )   
   {  
      vec.push_back (  i );  
   }  
  
   vector <int>::iterator vIter;  
   cout << "The vector vec is:\n ( ";  
   for ( vIter = vec.begin ( ) ; vIter != vec.end ( ); vIter++ )  
      cout << *vIter << " ";  
   cout << ")." << endl;  
  
   insert_iterator<vector<int> > ii ( vec, vec.begin ( ) );  
 *ii = 30;  
   ii++;  
 *ii = 40;  
   ii++;  
 *ii = 50;  
  
   cout << "After the insertions, the vector vec becomes:\n ( ";  
   for ( vIter = vec.begin ( ) ; vIter != vec.end ( ); vIter++ )  
      cout << *vIter << " ";  
   cout << ")." << endl;  
}  
\* Output:   
The vector vec is:  
 ( 1 2 3 4 ).  
After the insertions, the vector vec becomes:  
 ( 30 40 50 1 2 3 4 ).  
*\  

Inserta un valor en el contenedor y devuelve el iterador actualizado para señalar al nuevo elemento.

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

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

Parámetros

val
El valor que se asigna al contenedor.

Valor devuelto

Una referencia al elemento insertado en el contenedor.

Comentarios

Evalúa el primer operador de miembro

Iter = container->insert(Iter, val);

++Iter;

a continuación, devuelve *this.

Evalúa el segundo operador de miembro

Iter = container->insert(Iter, std::move(val));

++Iter;

a continuación, devuelve *this.

Ejemplo

// insert_iterator_op_assign.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 = 0 ; i < 4 ; ++i )   
   {  
      L.push_back ( 2 * i );  
   }  
  
   cout << "The original list L is:\n ( ";  
   for ( L_Iter = L.begin( ) ; L_Iter != L.end( ); L_Iter++ )  
      cout << *L_Iter << " ";  
   cout << ")." << endl;  
  
   insert_iterator< list < int> > Iter(L, L.begin ( ) );  
 *Iter = 10;  
 *Iter = 20;  
 *Iter = 30;  
  
   cout << "After the insertions, the list L is:\n ( ";  
   for ( L_Iter = L.begin( ) ; L_Iter != L.end( ); L_Iter++ )  
      cout << *L_Iter << " ";  
   cout << ")." << endl;  
}  
\* Output:   
The original list L is:  
 ( 0 2 4 6 ).  
After the insertions, the list L is:  
 ( 10 20 30 0 2 4 6 ).  
*\  

Tipo que proporciona una referencia a un elemento de una secuencia controlada por el contenedor asociado.

typedef typename Container::reference reference;

Comentarios

El tipo describe una referencia a un elemento de la secuencia controlada por el contenedor asociado.

Ejemplo

// insert_iterator_container_reference.cpp  
// compile with: /EHsc  
#include <iterator>  
#include <list>  
#include <iostream>  
  
int main( )  
{  
   using namespace std;  
  
   list<int> L;  
   insert_iterator<list<int> > iivIter( L , L.begin ( ) );  
 *iivIter = 10;  
 *iivIter = 20;  
 *iivIter = 30;  
  
   list<int>::iterator LIter;  
   cout << "The list L is: ( ";  
   for ( LIter = L.begin ( ) ; LIter != L.end ( ); LIter++ )  
      cout << *LIter << " ";  
   cout << ")." << endl;  
  
   insert_iterator<list<int> >::reference   
        RefFirst = *(L.begin ( ));  
   cout << "The first element in the list L is: "   
        << RefFirst << "." << endl;  
}  
\* Output:   
The list L is: ( 10 20 30 ).  
The first element in the list L is: 10.  
*\  

<>>
Seguridad para subprocesos en la biblioteca estándar de C++
Biblioteca de plantillas estándar

Mostrar: