insert_iterator Sınıfı
Çıkış yineleyici gereksinimlerini karşılayan bir yineleyici bağdaştırıcısını açıklar. Öğelerin üzerine yazmak yerine bir diziye ekler. Böylece C++ dizisi ve ilişkilendirici kapsayıcıların yineleyicileri tarafından sağlanan üzerine yazma semantiğinden farklı semantikler sağlar. insert_iterator
sınıfı, uyarlanan kapsayıcı türüne göre uyarlanır.
Sözdizimi
template <class Container>
class insert_iterator;
Parametreler
Kapsayıcı
Öğelerinin bir insert_iterator
tarafından eklendiği kapsayıcı türü.
Açıklamalar
türündeki Container
kapsayıcı, değişken boyutlu bir kapsayıcının gereksinimlerini karşılamalı ve parametrelerin türünde Container::iterator
olduğu ve Container::value_type
bir tür Container::iterator
döndürdüğü iki bağımsız değişkenli insert üye işlevine sahip olmalıdır. C++ Standart Kitaplık dizisi ve sıralanmış ilişkilendirilebilir kapsayıcılar bu gereksinimleri karşılar ve s ile insert_iterator
kullanılacak şekilde uyarlanabilir. İlişkilendirilebilir kapsayıcılar için, konum bağımsız değişkeni, ne kadar iyi olduğuna bağlı olarak performans düşmesi ve artması olasılığı bulunan bir gösterge olarak ele alınır. her insert_iterator
zaman kapsayıcısıyla başlatılmalıdır.
Oluşturucular
Oluşturucu | Açıklama |
---|---|
insert_iterator | Bir insert_iterator kapsayıcıda belirtilen konuma öğe ekleyen bir oluşturur. |
Tür tanımları
Tür adı | Açıklama |
---|---|
container_type | Genel ekleme yapılacak kapsayıcıyı temsil eden bir tür. |
referans | İlişkili kapsayıcı tarafından denetlenen bir dizi içindeki bir öğeye başvuru sağlayan bir tür. |
İşleçler
Operator | Açıklama |
---|---|
operatör* | Genel ekleme için çıkış yineleyici ifadesini * i = x uygulamak için kullanılan başvuru kaldırma işleci. |
operator++ | insert_iterator değerini bir değerin depolanabileceği bir sonraki konuma artırır. |
operator= | Genel ekleme için çıkış yineleyici ifadesini * i = x uygulamak için kullanılan atama işleci. |
Gereksinimler
Üst bilgi: <yineleyici>
Ad alanı: std
insert_iterator::container_type
Genel ekleme yapılacak kapsayıcıyı temsil eden bir tür.
typedef Container container_type;
Açıklamalar
Tür, Container şablon parametresinin eş anlamlısıdır.
Örnek
// 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 ).
*/
insert_iterator::insert_iterator
Bir insert_iterator
kapsayıcıda belirtilen konuma öğe ekleyen bir oluşturur.
insert_iterator(Container& _Cont, typename Container::iterator _It);
Parametreler
_Devam
öğelerinin eklendiği insert_iterator
kapsayıcı.
_O
Eklemenin konumu.
Açıklamalar
Tüm kapsayıcılar tarafından çağrılan insert member işlevine insert_iterator
sahiptir. İlişkili kapsayıcılar için position parametresi yalnızca bir öneridir. Inserter işlevi, değerlere eklemek için kullanışlı bir yol sağlar.
Örnek
// 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 ).
*/
insert_iterator::operator*
Öğesini döndüren insert yineleyicisinin adresleri olduğunu gösterir.
insert_iterator<Container>& operator*();
Dönüş Değeri
üye işlevi, ele alınan öğenin değerini döndürür.
Açıklamalar
Çıkış yineleyici ifadesini *Yineleyici = değeri uygulamak için kullanılır. Bir dizideki bir öğeyi ele alan bir yineleyiciyseIter
, *Yineleyici = değeri bu öğeyi değerle değiştirir ve dizideki toplam öğe sayısını değiştirmez.
Örnek
// 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 ).
*/
insert_iterator::operator++
insert_iterator
değerini bir değerin depolanabileceği bir sonraki konuma artırır.
insert_iterator<Container>& operator++();
insert_iterator<Container> operator++(int);
Parametreler
Bir insert_iterator
değerin depolanabileceği sonraki konumu ele alan.
Açıklamalar
Hem preincrementation hem de postincrementation işleçleri aynı sonucu döndürür.
Örnek
// 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 ).
*/
insert_iterator::operator=
Kapsayıcıya bir değer ekler ve yeni öğeye işaret etmek için güncelleştirilmiş yineleyiciyi döndürür.
insert_iterator<Container>& operator=(
typename Container::const_reference val,);
insert_iterator<Container>& operator=(
typename Container::value_type&& val);
Parametreler
Val
Kapsayıcıya atanacak değer.
Dönüş Değeri
Kapsayıcıya eklenen öğeye başvuru.
Açıklamalar
İlk üye işleci değerlendirir
Iter = container->insert(Iter, val)
;
++Iter;
ardından döndürür *this
.
İkinci üye işleci değerlendirir
Iter = container->insert(Iter, std::move(val));
++Iter;
ardından döndürür *this
.
Örnek
// 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 ).
*/
insert_iterator::reference
İlişkili kapsayıcı tarafından denetlenen bir dizi içindeki bir öğeye başvuru sağlayan bir tür.
typedef typename Container::reference reference;
Açıklamalar
türü, ilişkili kapsayıcı tarafından denetlenen sıranın bir öğesine başvuruyu açıklar.
Örnek
// 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.
*/
Ayrıca bkz.
<Yineleyici>
C++ Standart Kitaplığında İş Parçacığı Güvenliği
C++ Standart Kitaplığı Başvurusu