Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Menjelaskan adaptor iterator yang memenuhi persyaratan iterator output. Ini menyisipkan, bukan menimpa, elemen ke dalam urutan. Dengan demikian memberikan semantik yang berbeda dari semantik timpa yang disediakan oleh iterator dari urutan C++ dan kontainer asosiatif. Kelas insert_iterator di-templat pada jenis kontainer yang sedang diadaptasi.
Sintaks
template <class Container>
class insert_iterator;
Parameter
Kontainer
Jenis kontainer tempat elemen akan disisipkan oleh insert_iterator.
Keterangan
Kontainer jenis Container harus memenuhi persyaratan untuk kontainer berukuran variabel dan memiliki fungsi anggota sisipan dua argumen di mana parameter berjenis Container::iterator dan Container::value_type yang mengembalikan jenis Container::iterator. Urutan Pustaka Standar C++ dan kontainer asosiatif yang diurutkan memenuhi persyaratan ini dan dapat disesuaikan untuk digunakan dengan insert_iterators. Untuk kontainer asosiatif, argumen posisi diperlakukan sebagai petunjuk, yang berpotensi meningkatkan atau menurunkan performa tergantung pada seberapa baik petunjuknya. Harus insert_iterator selalu diinisialisasi dengan kontainernya.
Konstruktor
| Konstruktor | Deskripsi |
|---|---|
| insert_iterator | Membuat yang insert_iterator menyisipkan elemen ke dalam posisi tertentu dalam kontainer. |
Typedefs
| Nama jenis | Deskripsi |
|---|---|
| container_type | Jenis yang mewakili kontainer tempat penyisipan umum akan dibuat. |
| referensi | Jenis yang menyediakan referensi ke elemen dalam urutan yang dikontrol oleh kontainer terkait. |
Operator
| Operator | Deskripsi |
|---|---|
| Operator* | Operator dereferensi yang digunakan untuk mengimplementasikan ekspresi iterator output * i = x untuk penyisipan umum. |
| operator++ | Menaikkan insert_iterator ke lokasi berikutnya tempat nilai dapat disimpan. |
| operator= | Operator penugasan yang digunakan untuk mengimplementasikan ekspresi iterator output * i = x untuk penyisipan umum. |
Persyaratan
Header: <iterator>
Namespace: std
insert_iterator::container_type
Jenis yang mewakili kontainer tempat penyisipan umum akan dibuat.
typedef Container container_type;
Keterangan
Jenisnya adalah sinonim untuk kontainer parameter templat.
Contoh
// 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
Membuat yang insert_iterator menyisipkan elemen ke dalam posisi tertentu dalam kontainer.
insert_iterator(Container& _Cont, typename Container::iterator _It);
Parameter
_Lanjut
Kontainer tempat insert_iterator memasukkan elemen.
_Dia
Posisi untuk penyisipan.
Keterangan
Semua kontainer memiliki fungsi sisipkan anggota yang dipanggil insert_iteratoroleh . Untuk kontainer asosiatif, parameter posisi hanyalah saran. Fungsi penyisip menyediakan cara mudah untuk menyisipkan ke nilai.
Contoh
// 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*
Dereferensi sisipan iterator yang mengembalikan elemen adalah alamat.
insert_iterator<Container>& operator*();
Tampilkan Nilai
Fungsi anggota mengembalikan nilai elemen yang ditangani.
Keterangan
Digunakan untuk mengimplementasikan ekspresi iterator output *Nilai iter = . Jika Iter adalah iterator yang membahas elemen secara berurutan, maka nilai *Iter = mengganti elemen tersebut dengan nilai dan tidak mengubah jumlah total elemen dalam urutan.
Contoh
// 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++
Menaikkan insert_iterator ke lokasi berikutnya tempat nilai dapat disimpan.
insert_iterator<Container>& operator++();
insert_iterator<Container> operator++(int);
Parameter
Alamat insert_iterator lokasi berikutnya tempat nilai dapat disimpan.
Keterangan
Operator preincrementation dan postincrementation mengembalikan hasil yang sama.
Contoh
// 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=
Menyisipkan nilai ke dalam kontainer dan mengembalikan iterator yang diperbarui untuk menunjuk ke elemen baru.
insert_iterator<Container>& operator=(
typename Container::const_reference val);
insert_iterator<Container>& operator=(
typename Container::value_type&& val);
Parameter
Val
Nilai yang akan ditetapkan ke kontainer.
Tampilkan Nilai
Referensi ke elemen yang disisipkan ke dalam kontainer.
Keterangan
Operator anggota pertama mengevaluasi
Iter = container->insert(Iter, val);
++Iter;
kemudian mengembalikan *this.
Operator anggota kedua mengevaluasi
Iter = container->insert(Iter, std::move(val));
++Iter;
kemudian mengembalikan *this.
Contoh
// 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::referensi
Jenis yang menyediakan referensi ke elemen dalam urutan yang dikontrol oleh kontainer terkait.
typedef typename Container::reference reference;
Keterangan
Jenis ini menjelaskan referensi ke elemen urutan yang dikontrol oleh kontainer terkait.
Contoh
// 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.
*/
Lihat juga
<iterator>
Keamanan utas di Pustaka Standar C++
Referensi pustaka standar C++