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, daripada menimpa, elemen ke ujung belakang urutan dan dengan demikian menyediakan semantik yang berbeda dari semantik timpa yang disediakan oleh iterator kontainer urutan C++. Kelas back_insert_iterator di-templat pada jenis kontainer.
Sintaks
template <class Container>
class back_insert_iterator;
Parameter
Kontainer
Jenis kontainer ke bagian belakang elemen mana yang akan dimasukkan oleh back_insert_iterator.
Keterangan
Kontainer harus memenuhi persyaratan untuk urutan penyisipan kembali di mana dimungkinkan untuk menyisipkan elemen di akhir urutan dalam waktu konstanta yang diamortisasi. Kontainer urutan Pustaka Standar C++ yang ditentukan oleh Kelas deque, daftar Kelas dan Kelas vektor menyediakan fungsi anggota yang diperlukan push_back dan memenuhi persyaratan ini. Ketiga kontainer dan string ini masing-masing dapat disesuaikan untuk digunakan dengan back_insert_iterators. Harus back_insert_iterator selalu diinisialisasi dengan kontainernya.
Konstruktor
| Konstruktor | Deskripsi |
|---|---|
| back_insert_iterator | Membuat back_insert_iterator yang menyisipkan elemen setelah elemen terakhir dalam kontainer. |
Typedefs
| Nama jenis | Deskripsi |
|---|---|
| container_type | Jenis yang menyediakan kontainer untuk back_insert_iterator. |
| referensi | Jenis yang menyediakan referensi untuk back_insert_iterator. |
Operator
| Operator | Deskripsi |
|---|---|
| Operator* | Operator dereferensi yang digunakan untuk mengimplementasikan ekspresi iterator output * i = x untuk penyisipan kembali. |
| operator++ | Menaikkan back_insert_iterator ke lokasi berikutnya tempat nilai dapat disimpan. |
| operator= | Operator penugasan yang digunakan untuk mengimplementasikan ekspresi iterator output * i = x untuk penyisipan kembali. |
Persyaratan
Header: <iterator>
Namespace: std
back_insert_iterator::back_insert_iterator
Membuat back_insert_iterator yang menyisipkan elemen setelah elemen terakhir dalam kontainer.
explicit back_insert_iterator(Container& _Cont);
Parameter
_Lanjut
Kontainer tempat back_insert_iterator memasukkan elemen.
Tampilkan Nilai
A back_insert_iterator untuk kontainer parameter.
Contoh
// 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
Jenis yang menyediakan kontainer untuk back_insert_iterator.
typedef Container
container_type;
Keterangan
Jenisnya adalah sinonim untuk kontainer parameter templat.
Contoh
// 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 dereferensi yang digunakan untuk mengimplementasikan ekspresi iterator output * i = x.
back_insert_iterator<Container>& operator*();
Tampilkan Nilai
Referensi ke elemen yang disisipkan di bagian belakang kontainer.
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
// 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++
Menaikkan back_insert_iterator ke lokasi berikutnya tempat nilai dapat disimpan.
back_insert_iterator<Container>& operator++();
back_insert_iterator<Container> operator++(int);
Tampilkan Nilai
Alamat back_insert_iterator lokasi berikutnya tempat nilai dapat disimpan.
Keterangan
Operator preincrementation dan postincrementation mengembalikan hasil yang sama.
Contoh
// 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=
Menambahkan atau mendorong nilai ke ujung belakang kontainer.
back_insert_iterator<Container>& operator=(typename Container::const_reference val);
back_insert_iterator<Container>& operator=(typename Container::value_type&& val);
Parameter
Val
Nilai yang akan dimasukkan ke dalam kontainer.
Tampilkan Nilai
Referensi ke elemen terakhir yang disisipkan di bagian belakang kontainer.
Keterangan
Operator anggota pertama mengevaluasi Container.push_back( val),
kemudian mengembalikan *this. Operator anggota kedua mengevaluasi
container->push_back((typename Container::value_type&&)val),
kemudian mengembalikan *this.
Contoh
// 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
Jenis yang menyediakan referensi untuk back_insert_iterator.
typedef typename Container::reference reference;
Keterangan
Jenis ini menjelaskan referensi ke elemen urutan yang dikontrol oleh kontainer terkait.
Contoh
// 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.
Lihat juga
<iterator>
Keamanan utas di Pustaka Standar C++
Referensi pustaka standar C++