Udostępnij za pośrednictwem


back_insert_iterator — Klasa

Opisuje adapter iteratora, który spełnia wymagania iteratora danych wyjściowych. Wstawia (a nie zastępuje) elementy do tylnego końca sekwencji i w ten sposób zapewnia semantykę, która różni się od semantyki zastępowania, dostarczanej przez iteratory kontenerów sekwencji C++. Klasa back_insert_iterator jest templatized na typ kontenera.

Składnia

template <class Container>
class back_insert_iterator;

Parametry

Kontener
Typ kontenera z tyłu elementów, które mają zostać wstawione przez element back_insert_iterator.

Uwagi

Kontener musi spełniać wymagania dla sekwencji wstawiania na tył, gdzie jest możliwe wstawianie elementów na koniec sekwencji w amortyzowanym stałym czasie. Kontenery sekwencji biblioteki standardowej języka C++ zdefiniowane przez klasę deque, listę Klasa i klasa wektora zapewniają wymaganą push_back funkcję składową i spełniają te wymagania. Te trzy kontenery i ciągi mogą być dostosowane do użycia z back_insert_iterators. Element back_insert_iterator musi być zawsze inicjowany przy użyciu kontenera.

Konstruktory

Konstruktor opis
back_insert_iterator Tworzy element back_insert_iterator , który wstawia elementy po ostatnim elemercie w kontenerze.

Typedefs

Nazwa typu opis
container_type Typ, który udostępnia kontener dla elementu back_insert_iterator.
odniesienie Typ, który zawiera odwołanie dla elementu back_insert_iterator.

Operatory

Operator opis
operator* Operator dereferencing używany do implementowania wyrażenia iteratora wyjściowego * i = x dla wstawiania wstecznego.
operator++ Zwiększa back_insert_iterator wartość do następnej lokalizacji, w której może być przechowywana wartość.
operator = Operator przypisania używany do implementowania wyrażenia iteratora wyjściowego * i = x dla wstawiania wstecznego.

Wymagania

Nagłówek: <iterator>

Przestrzeń nazw: std

back_insert_iterator::back_insert_iterator

Tworzy element back_insert_iterator , który wstawia elementy po ostatnim elemercie w kontenerze.

explicit back_insert_iterator(Container& _Cont);

Parametry

_Cd
Kontener, back_insert_iterator do którego ma wstawić element.

Wartość zwracana

Wartość back_insert_iterator dla kontenera parametrów.

Przykład

// 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

Typ, który udostępnia kontener dla elementu back_insert_iterator.

typedef Container
container_type;

Uwagi

Typ jest synonimem parametru szablonu Container.

Przykład

// 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*

Operator dereferencing używany do implementowania wyrażenia iteratora wyjściowego * i = x.

back_insert_iterator<Container>& operator*();

Wartość zwracana

Odwołanie do elementu wstawionego z tyłu kontenera.

Uwagi

Służy do implementowania wyrażenia iteratora wyjściowego *wartość iteratora = . Jeśli iter jest iteratorem, który adresuje element w sekwencji, wartość *Iter = zastępuje ten element wartością i nie zmienia całkowitej liczby elementów w sekwencji.

Przykład

// 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++

Zwiększa back_insert_iterator wartość do następnej lokalizacji, w której może być przechowywana wartość.

back_insert_iterator<Container>& operator++();
back_insert_iterator<Container> operator++(int);

Wartość zwracana

Adresowanie back_insert_iterator następnej lokalizacji, w której może być przechowywana wartość.

Uwagi

Oba operatory preinkrementacji i postincrementation zwracają ten sam wynik.

Przykład

// 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=

Dołącza lub wypycha wartość na zaplecze kontenera.

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

Parametry

Val
Wartość, która ma zostać wstawiona do kontenera.

Wartość zwracana

Odwołanie do ostatniego elementu wstawionego z tyłu kontenera.

Uwagi

Pierwszy operator elementu członkowskiego ocenia Container.push_back( val)wartość ,

następnie zwraca wartość *this. Drugi operator elementu członkowskiego ocenia

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

następnie zwraca wartość *this.

Przykład

// 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

Typ, który zawiera odwołanie dla elementu back_insert_iterator.

typedef typename Container::reference reference;

Uwagi

Typ opisuje odwołanie do elementu sekwencji kontrolowanej przez skojarzony kontener.

Przykład

// 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.

Zobacz też

<Sterująca>
Bezpieczeństwo wątku w standardowej bibliotece C++
Dokumentacja standardowej biblioteki C++