Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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++