Sdílet prostřednictvím


back_insert_iterator – třída

Popisuje adaptér iterátoru, který splňuje požadavky výstupního iterátoru. Vloží, spíše než přepíše, prvky do zadní části sekvence a poskytne tak sémantiku, která se liší od sémantiky přepsání poskytnuté iterátory kontejnerů sekvence jazyka C++. Třída back_insert_iterator je templatizována na typ kontejneru.

Syntaxe

template <class Container>
class back_insert_iterator;

Parametry

Kontejner
Typ kontejneru do zadní části, které prvky mají být vloženy back_insert_iteratorpomocí .

Poznámky

Kontejner musí splňovat požadavky pro sekvenci vložení do zadní části, je-li možné vložit prvky na konec sekvence v amortizovaném konstantním času. Kontejnery sekvence standardní knihovny C++ definované deque Class, list Class a vector Class poskytují potřebnou push_back členská funkce a splňují tyto požadavky. Tyto tři kontejnery a řetězce mohou být upraveny tak, aby se používaly s back_insert_iterator. Musí back_insert_iterator být vždy inicializován pomocí svého kontejneru.

Konstruktory

Konstruktor Popis
back_insert_iterator Vytvoří elementy back_insert_iterator za poslední prvek v kontejneru.

Typedefs

Název typu Popis
container_type Typ, který poskytuje kontejner pro .back_insert_iterator
odkaz Typ, který poskytuje odkaz na back_insert_iterator.

Operátory

Operátor Popis
operátor* Operátor dereferencing použitý k implementaci výstupního výrazu iterátoru * i = x pro zpětné vložení.
operator++ Zvýší back_insert_iterator hodnotu na další místo, do kterého může být uložena hodnota.
operator= Operátor přiřazení použitý k implementaci výrazu iterátoru výstupu * i = x pro vložení zpět.

Požadavky

Záhlaví: <iterátor>

Obor názvů: std

back_insert_iterator::back_insert_iterator

Vytvoří elementy back_insert_iterator za poslední prvek v kontejneru.

explicit back_insert_iterator(Container& _Cont);

Parametry

_Pokrač
Kontejner, do kterého back_insert_iterator se má vložit prvek.

Návratová hodnota

A back_insert_iterator pro kontejner parametrů.

Příklad

// 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, který poskytuje kontejner pro .back_insert_iterator

typedef Container
container_type;

Poznámky

Typ je synonymem parametru šablony Container.

Příklad

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

Operátor dereferencing použitý k implementaci výstupního výrazu iterátoru * i = x.

back_insert_iterator<Container>& operator*();

Návratová hodnota

Odkaz na prvek vložený do zadní části kontejneru.

Poznámky

Používá se k implementaci výstupního výrazu iterátoru *Hodnota Iteru = . Pokud je iterátor, který řeší prvek v sekvenci, *Iter = hodnota nahradí tento prvek hodnotou a nezmění celkový počet prvků v sekvenci.

Příklad

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

Zvýší back_insert_iterator hodnotu na další místo, do kterého může být uložena hodnota.

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

Návratová hodnota

Adresování back_insert_iterator dalšího umístění, do kterého může být uložena hodnota.

Poznámky

Operátory preinkrementace i postinkrementace vrátí stejný výsledek.

Příklad

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

Připojí nebo vloží hodnotu do back-endu kontejneru.

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

Parametry

Val
Hodnota, která se má vložit do kontejneru.

Návratová hodnota

Odkaz na poslední prvek vložený do zadní části kontejneru.

Poznámky

První člen operátor vyhodnotí Container.push_back( val),

poté vrátí hodnotu *this. Druhý operátor členu vyhodnocuje.

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

poté vrátí hodnotu *this.

Příklad

// 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, který poskytuje odkaz na back_insert_iterator.

typedef typename Container::reference reference;

Poznámky

Typ popisuje odkaz na prvek sekvence řízené přidruženým kontejnerem.

Příklad

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

Viz také

<iterátor>
Bezpečný přístup z více vláken ve standardní knihovně C++
Standardní knihovna C++ – referenční dokumentace