Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Çı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_iteratortarafı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::iteratordö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_iteratorkullanı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_iteratorsahiptir. İ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