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.
Templat kelas adalah adaptor iterator yang menjelaskan objek iterator terbalik yang berakibat seperti akses acak atau iterator dua arah, hanya secara terbalik. Ini memungkinkan traversal mundur dari rentang.
Sintaks
template <class RandomIterator>
class reverse_iterator
Parameter
RandomIterator Jenis yang mewakili iterator yang akan disesuaikan untuk beroperasi secara terbalik.
Keterangan
Kontainer Pustaka Standar C++ yang ada juga menentukan reverse_iterator dan const_reverse_iterator mengetik dan memiliki fungsi rbegin anggota dan rend yang mengembalikan iterator terbalik. Iterator ini memiliki semantik timpa. reverse_iterator Adaptor melengkapi fungsionalitas ini karena menawarkan semantik sisipan dan juga dapat digunakan dengan aliran.
reverse_iterator yang memerlukan iterator dua arah tidak boleh memanggil salah satu fungsi operator+=anggota , , , operator-operator+operator-=, atau operator[], yang hanya dapat digunakan dengan iterator akses acak.
Rentang iterator adalah [pertama, terakhir), di mana kurung siku di sebelah kiri menunjukkan penyertaan pertama dan tanda kurung di sebelah kanan menunjukkan dimasukkannya elemen hingga tetapi tidak termasuk yang terakhir. Elemen yang sama disertakan dalam urutan terbalik [ rev - pertama, rev - terakhir) sehingga jika terakhir adalah elemen one-past-the-end dalam urutan, maka elemen pertama rev - terlebih dahulu dalam urutan terbalik menunjuk ke *(terakhir - 1). Identitas yang menghubungkan semua iterator terbalik dengan iterator yang mendasarnya adalah:
&*(reverse_iterator (i)) == &*(i - 1).
Dalam praktiknya, ini berarti bahwa dalam urutan terbalik reverse_iterator akan merujuk ke elemen satu posisi di luar (di sebelah kanan) elemen yang telah dirujuk iterator dalam urutan asli. Jadi jika iterator membahas elemen 6 dalam urutan (2, 4, 6, 8), maka reverse_iterator akan membahas elemen 4 dalam urutan terbalik (8, 6, 4, 2).
Konstruktor
| Konstruktor | Deskripsi |
|---|---|
| reverse_iterator | Membuat default reverse_iterator atau reverse_iterator dari iterator yang mendasar. |
Typedefs
| Nama jenis | Deskripsi |
|---|---|
| difference_type | Jenis yang menyediakan perbedaan antara dua reverse_iteratoryang mengacu pada elemen dalam kontainer yang sama. |
| iterator_type | Jenis yang menyediakan iterator yang mendasar untuk reverse_iterator. |
| Pointer | Jenis yang menyediakan penunjuk ke elemen yang ditangani oleh reverse_iterator. |
| referensi | Jenis yang menyediakan referensi ke elemen yang ditangani oleh reverse_iterator. |
Fungsi anggota
| Fungsi anggota | Deskripsi |
|---|---|
| dasar | Memulihkan iterator yang mendasar dari reverse_iterator. |
Operator
| Operator | Deskripsi |
|---|---|
| operator_star | Mengembalikan elemen yang ditangani reverse_iterator . |
| operator+ | Menambahkan offset ke iterator dan mengembalikan alamat baru reverse_iterator elemen yang disisipkan pada posisi offset baru. |
| operator++ | Menaikkan reverse_iterator ke elemen berikutnya. |
| operator+= | Menambahkan offset tertentu dari reverse_iterator. |
| Operator- | Mengurangi offset dari reverse_iterator dan mengembalikan reverse_iterator alamat elemen pada posisi offset. |
| Operator-- | reverse_iterator Mengurangi ke elemen sebelumnya. |
| operator-= | Mengurangi offset tertentu dari reverse_iterator. |
| Operator-> | Mengembalikan penunjuk ke elemen yang ditangani oleh reverse_iterator. |
operator[] |
Mengembalikan referensi ke offset elemen dari elemen yang reverse_iterator ditangani oleh sejumlah posisi tertentu. |
Persyaratan
Header:<iterator>
Namespace: std
reverse_iterator::base
Memulihkan iterator yang mendasar dari reverse_iterator.
RandomIterator base() const;
Tampilkan Nilai
Iterator yang mendasar reverse_iterator.
Keterangan
Identitas yang menghubungkan semua iterator terbalik dengan iterator yang mendasarnya adalah:
&*(reverse_iterator (i)) == &*(i - 1).
Dalam praktiknya, ini berarti bahwa dalam urutan reverse_iterator terbalik akan merujuk ke elemen satu posisi di luar (di sebelah kanan) elemen yang telah dirujuk iterator dalam urutan asli. Jadi jika iterator membahas elemen 6 dalam urutan (2, 4, 6, 8), maka reverse_iterator akan membahas elemen 4 dalam urutan terbalik (8, 6, 4, 2).
Contoh
// reverse_iterator_base.cpp
// compile with: /EHsc
#include <iterator>
#include <algorithm>
#include <vector>
#include <iostream>
int main( )
{
using namespace std;
int i;
vector<int> vec;
for ( i = 1 ; i < 6 ; ++i )
{
vec.push_back ( 2 * i );
}
vector <int>::iterator vIter;
cout << "The vector vec is: ( ";
for ( vIter = vec.begin ( ) ; vIter != vec.end ( ); vIter++ )
cout << *vIter << " ";
cout << ")." << endl;
vector <int>::reverse_iterator rvIter;
cout << "The vector vec reversed is: ( ";
for ( rvIter = vec.rbegin( ) ; rvIter != vec.rend( ); rvIter++)
cout << *rvIter << " ";
cout << ")." << endl;
vector <int>::iterator pos, bpos;
pos = find ( vec.begin ( ), vec.end ( ), 6 );
cout << "The iterator pos points to: " << *pos << "." << endl;
typedef reverse_iterator<vector<int>::iterator>::iterator_type it_vec_int_type;
reverse_iterator<it_vec_int_type> rpos ( pos );
cout << "The reverse_iterator rpos points to: " << *rpos
<< "." << endl;
bpos = rpos.base ( );
cout << "The iterator underlying rpos is bpos & it points to: "
<< *bpos << "." << endl;
}
reverse_iterator::d ifference_type
Jenis yang menyediakan perbedaan antara dua reverse_iteratoryang mengacu pada elemen dalam kontainer yang sama.
typedef typename iterator_traits<RandomIterator>::difference_type difference_type;
Keterangan
Jenis reverse_iterator perbedaannya sama dengan jenis perbedaan iterator.
Jenisnya adalah sinonim untuk nama iterator_traits<jenis sifat iterator RandomIterator>::p ointer.
Contoh
Lihat reverse_iterator::operator[] contoh cara mendeklarasikan dan menggunakan difference_type.
reverse_iterator::iterator_type
Jenis yang menyediakan iterator yang mendasar untuk reverse_iterator.
typedef RandomIterator iterator_type;
Keterangan
Jenisnya adalah sinonim untuk parameter Iteratortemplat .
Contoh
Lihat reverse_iterator::base untuk contoh cara mendeklarasikan dan menggunakan iterator_type.
reverse_iterator::operator*
Mengembalikan elemen yang ditangani reverse_iterator.
reference operator*() const;
Tampilkan Nilai
Nilai elemen yang ditangani oleh reverse_iterator.
Keterangan
Operator mengembalikan *( saat ini - 1).
Contoh
// reverse_iterator_op_ref.cpp
// compile with: /EHsc
#include <iterator>
#include <algorithm>
#include <vector>
#include <iostream>
int main( )
{
using namespace std;
int i;
vector<int> vec;
for (i = 1 ; i < 6 ; ++i )
{
vec.push_back ( 2 * i );
}
vector <int>::iterator vIter;
cout << "The vector vec is: ( ";
for ( vIter = vec.begin ( ) ; vIter != vec.end ( ); vIter++ )
cout << *vIter << " ";
cout << ")." << endl;
vector <int>::reverse_iterator rvIter;
cout << "The vector vec reversed is: ( ";
for ( rvIter = vec.rbegin( ) ; rvIter != vec.rend( ); rvIter++)
cout << *rvIter << " ";
cout << ")." << endl;
vector <int>::iterator pos, bpos;
pos = find ( vec.begin ( ), vec.end ( ), 6 );
// Declare a difference type for a parameter
// declare a reference return type
reverse_iterator<vector<int>::iterator>::reference refpos = *pos;
cout << "The iterator pos points to: " << refpos << "." << endl;
}
reverse_iterator::operator+
Menambahkan offset ke iterator dan mengembalikan alamat baru reverse_iterator elemen yang disisipkan pada posisi offset baru.
reverse_iterator<RandomIterator> operator+(difference_type Off) const;
Parameter
Off
Offset yang akan ditambahkan ke iterator terbalik.
Tampilkan Nilai
Mengatasi reverse_iterator elemen offset.
Keterangan
Fungsi anggota ini hanya dapat digunakan jika reverse_iterator memenuhi persyaratan untuk iterator akses acak.
Contoh
// reverse_iterator_op_add.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main( )
{
using namespace std;
int i;
vector<int> vec;
for (i = 1 ; i < 6 ; ++i )
{
vec.push_back ( 2 * i );
}
vector <int>::iterator vIter;
cout << "The vector vec is: ( ";
for ( vIter = vec.begin( ) ; vIter != vec.end( ); vIter++)
cout << *vIter << " ";
cout << ")." << endl;
vector <int>::reverse_iterator rvIter;
cout << "The vector vec reversed is: ( ";
for ( rvIter = vec.rbegin( ) ; rvIter != vec.rend( ); rvIter++)
cout << *rvIter << " ";
cout << ")." << endl;
// Initializing reverse_iterators to the first element
vector <int>::reverse_iterator rVPOS1 = vec.rbegin ( );
cout << "The iterator rVPOS1 initially points to the first "
<< "element\n in the reversed sequence: "
<< *rVPOS1 << "." << endl;
vector <int>::reverse_iterator rVPOS2 =rVPOS1 + 2; // offset added
cout << "After the +2 offset, the iterator rVPOS2 points\n"
<< " to the 3rd element in the reversed sequence: "
<< *rVPOS2 << "." << endl;
}
The vector vec is: ( 2 4 6 8 10 ).
The vector vec reversed is: ( 10 8 6 4 2 ).
The iterator rVPOS1 initially points to the first element
in the reversed sequence: 10.
After the +2 offset, the iterator rVPOS2 points
to the 3rd element in the reversed sequence: 6.
reverse_iterator::operator++
Menaikkan reverse_iterator ke elemen sebelumnya.
reverse_iterator<RandomIterator>& operator++();
reverse_iterator<RandomIterator> operator++(int);
Tampilkan Nilai
Operator pertama mengembalikan operator yang telah diindeks reverse_iterator sebelumnya dan yang kedua, operator postincrement, mengembalikan salinan tahapan reverse_iterator.
Keterangan
Fungsi anggota ini hanya dapat digunakan jika reverse_iterator memenuhi persyaratan untuk iterator dua arah.
Contoh
// reverse_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 < 6 ; ++i )
{
vec.push_back ( 2 * i - 1 );
}
vector <int>::iterator vIter;
cout << "The vector vec is: ( ";
for ( vIter = vec.begin( ) ; vIter != vec.end( ); vIter++)
cout << *vIter << " ";
cout << ")." << endl;
vector <int>::reverse_iterator rvIter;
cout << "The vector vec reversed is: ( ";
for ( rvIter = vec.rbegin( ) ; rvIter != vec.rend( ); rvIter++)
cout << *rvIter << " ";
cout << ")." << endl;
// Initializing reverse_iterators to the last element
vector <int>::reverse_iterator rVPOS1 = vec.rbegin( );
cout << "The iterator rVPOS1 initially points to the first "
<< "element\n in the reversed sequence: "
<< *rVPOS1 << "." << endl;
rVPOS1++; // postincrement, preincrement: ++rVPSO1
cout << "After incrementing, the iterator rVPOS1 points\n"
<< " to the second element in the reversed sequence: "
<< *rVPOS1 << "." << endl;
}
The vector vec is: ( 1 3 5 7 9 ).
The vector vec reversed is: ( 9 7 5 3 1 ).
The iterator rVPOS1 initially points to the first element
in the reversed sequence: 9.
After incrementing, the iterator rVPOS1 points
to the second element in the reversed sequence: 7.
reverse_iterator::operator+=
Menambahkan offset tertentu dari reverse_iterator.
reverse_iterator<RandomIterator>& operator+=(difference_type Off);
Parameter
Off
Offset untuk menaikkan iterator.
Tampilkan Nilai
Referensi ke elemen yang ditangani oleh reverse_iterator.
Contoh
// reverse_iterator_op_addoff.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main( )
{
using namespace std;
int i;
vector<int> vec;
for (i = 1 ; i < 6 ; ++i )
{
vec.push_back ( 2 * i );
}
vector <int>::iterator vIter;
cout << "The vector vec is: ( ";
for ( vIter = vec.begin( ) ; vIter != vec.end( ); vIter++)
cout << *vIter << " ";
cout << ")." << endl;
vector <int>::reverse_iterator rvIter;
cout << "The vector vec reversed is: ( ";
for ( rvIter = vec.rbegin( ) ; rvIter != vec.rend( ); rvIter++)
cout << *rvIter << " ";
cout << ")." << endl;
// Initializing reverse_iterators to the last element
vector <int>::reverse_iterator rVPOS1 = vec.rbegin ( );
cout << "The iterator rVPOS1 initially points to the first "
<< "element\n in the reversed sequence: "
<< *rVPOS1 << "." << endl;
rVPOS1+=2; // addition of an offset
cout << "After the +2 offset, the iterator rVPOS1 now points\n"
<< " to the third element in the reversed sequence: "
<< *rVPOS1 << "." << endl;
}
The vector vec is: ( 2 4 6 8 10 ).
The vector vec reversed is: ( 10 8 6 4 2 ).
The iterator rVPOS1 initially points to the first element
in the reversed sequence: 10.
After the +2 offset, the iterator rVPOS1 now points
to the third element in the reversed sequence: 6.
reverse_iterator::operator-
Mengurangi offset dari reverse_iterator dan mengembalikan reverse_iterator alamat elemen pada posisi offset.
reverse_iterator<RandomIterator> operator-(difference_type Off) const;
Parameter
Off
Offset yang akan dikurangi dari reverse_iterator.
Tampilkan Nilai
Mengatasi reverse_iterator elemen offset.
Keterangan
Fungsi anggota ini hanya dapat digunakan jika reverse_iterator memenuhi persyaratan untuk iterator akses acak.
Contoh
// reverse_iterator_op_sub.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main( )
{
using namespace std;
int i;
vector<int> vec;
for ( i = 1 ; i < 6 ; ++i )
{
vec.push_back ( 3 * i );
}
vector <int>::iterator vIter;
cout << "The vector vec is: ( ";
for ( vIter = vec.begin( ) ; vIter != vec.end( ); vIter++)
cout << *vIter << " ";
cout << ")." << endl;
vector <int>::reverse_iterator rvIter;
cout << "The vector vec reversed is: ( ";
for ( rvIter = vec.rbegin( ) ; rvIter != vec.rend( ); rvIter++)
cout << *rvIter << " ";
cout << ")." << endl;
// Initializing reverse_iterators to the first element
vector <int>::reverse_iterator rVPOS1 = vec.rend ( ) - 1;
cout << "The iterator rVPOS1 initially points to the last "
<< "element\n in the reversed sequence: "
<< *rVPOS1 << "." << endl;
vector <int>::reverse_iterator rVPOS2 =rVPOS1 - 2; // offset subtracted
cout << "After the -2 offset, the iterator rVPOS2 points\n"
<< " to the 2nd element from the last in the reversed sequence: "
<< *rVPOS2 << "." << endl;
}
The vector vec is: ( 3 6 9 12 15 ).
The vector vec reversed is: ( 15 12 9 6 3 ).
The iterator rVPOS1 initially points to the last element
in the reversed sequence: 3.
After the -2 offset, the iterator rVPOS2 points
to the 2nd element from the last in the reversed sequence: 9.
reverse_iterator::operator--
Mengurangi reverse_iterator ke elemen sebelumnya.
reverse_iterator<RandomIterator>& operator--();
reverse_iterator<RandomIterator> operator--(int);
Tampilkan Nilai
Operator pertama mengembalikan operator yang telah ditentukan reverse_iterator sebelumnya dan yang kedua, operator postdecrement, mengembalikan salinan yang direkrementasikan reverse_iterator.
Keterangan
Fungsi anggota ini hanya dapat digunakan jika reverse_iterator memenuhi persyaratan untuk iterator dua arah.
Contoh
// reverse_iterator_op_decr.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main( )
{
using namespace std;
int i;
vector<int> vec;
for (i = 1 ; i < 6 ; ++i )
{
vec.push_back ( 2 * i - 1 );
}
vector <int>::iterator vIter;
cout << "The vector vec is: ( ";
for ( vIter = vec.begin( ) ; vIter != vec.end( ); vIter++)
cout << *vIter << " ";
cout << ")." << endl;
vector <int>::reverse_iterator rvIter;
cout << "The vector vec reversed is: ( ";
for ( rvIter = vec.rbegin( ) ; rvIter != vec.rend( ); rvIter++)
cout << *rvIter << " ";
cout << ")." << endl;
// Initializing reverse_iterators to the first element
vector <int>::reverse_iterator rVPOS1 = vec.rend ( ) - 1;
cout << "The iterator rVPOS1 initially points to the last "
<< "element\n in the reversed sequence: "
<< *rVPOS1 << "." << endl;
rVPOS1--; // postdecrement, predecrement: --rVPSO1
cout << "After the decrement, the iterator rVPOS1 points\n"
<< " to the next-to-last element in the reversed sequence: "
<< *rVPOS1 << "." << endl;
}
The vector vec is: ( 1 3 5 7 9 ).
The vector vec reversed is: ( 9 7 5 3 1 ).
The iterator rVPOS1 initially points to the last element
in the reversed sequence: 1.
After the decrement, the iterator rVPOS1 points
to the next-to-last element in the reversed sequence: 3.
reverse_iterator::operator-=
Mengurangi offset tertentu dari reverse_iterator.
reverse_iterator<RandomIterator>& operator-=(difference_type Off);
Parameter
Off
Offset yang akan dikurangi dari reverse_iterator.
Keterangan
Fungsi anggota ini hanya dapat digunakan jika reverse_iterator memenuhi persyaratan untuk iterator akses acak.
Operator mengevaluasi Nonaktif saat ini + lalu mengembalikan .*this
Contoh
// reverse_iterator_op_suboff.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main( )
{
using namespace std;
int i;
vector<int> vec;
for (i = 1 ; i < 6 ; ++i )
{
vec.push_back ( 3 * i );
}
vector <int>::iterator vIter;
cout << "The vector vec is: ( ";
for ( vIter = vec.begin( ) ; vIter != vec.end( ); vIter++)
cout << *vIter << " ";
cout << ")." << endl;
vector <int>::reverse_iterator rvIter;
cout << "The vector vec reversed is: ( ";
for ( rvIter = vec.rbegin( ) ; rvIter != vec.rend( ); rvIter++)
cout << *rvIter << " ";
cout << ")." << endl;
// Initializing reverse_iterators to the first element
vector <int>::reverse_iterator rVPOS1 = vec.rend ( ) - 1;
cout << "The iterator rVPOS1 initially points to the last "
<< "element\n in the reversed sequence: "
<< *rVPOS1 << "." << endl;
rVPOS1-=2; // Subtraction of an offset
cout << "After the -2 offset, the iterator rVPOS1 now points\n"
<< " to the 2nd element from the last in the reversed sequence: "
<< *rVPOS1 << "." << endl;
}
The vector vec is: ( 3 6 9 12 15 ).
The vector vec reversed is: ( 15 12 9 6 3 ).
The iterator rVPOS1 initially points to the last element
in the reversed sequence: 3.
After the -2 offset, the iterator rVPOS1 now points
to the 2nd element from the last in the reversed sequence: 9.
reverse_iterator::operator->
Mengembalikan penunjuk ke elemen yang ditangani oleh reverse_iterator.
pointer operator->() const;
Tampilkan Nilai
Penunjuk ke elemen yang ditangani oleh reverse_iterator.
Keterangan
Operator mengembalikan &**this.
Contoh
// reverse_iterator_ptrto.cpp
// compile with: /EHsc
#include <iterator>
#include <algorithm>
#include <vector>
#include <utility>
#include <iostream>
int main( )
{
using namespace std;
typedef vector<pair<int,int> > pVector;
pVector vec;
vec.push_back(pVector::value_type(1,2));
vec.push_back(pVector::value_type(3,4));
vec.push_back(pVector::value_type(5,6));
pVector::iterator pvIter;
cout << "The vector vec of integer pairs is:\n( ";
for ( pvIter = vec.begin ( ) ; pvIter != vec.end ( ); pvIter++)
cout << "( " << pvIter -> first << ", " << pvIter -> second << ") ";
cout << ")" << endl << endl;
pVector::reverse_iterator rpvIter;
cout << "The vector vec reversed is:\n( ";
for ( rpvIter = vec.rbegin( ) ; rpvIter != vec.rend( ); rpvIter++ )
cout << "( " << rpvIter -> first << ", " << rpvIter -> second << ") ";
cout << ")" << endl << endl;
pVector::iterator pos = vec.begin ( );
pos++;
cout << "The iterator pos points to:\n( " << pos -> first << ", "
<< pos -> second << " )" << endl << endl;
pVector::reverse_iterator rpos (pos);
// Use operator -> with return type: why type int and not int*
int fint = rpos -> first;
int sint = rpos -> second;
cout << "The reverse_iterator rpos points to:\n( " << fint << ", "
<< sint << " )" << endl;
}
The vector vec of integer pairs is:
( ( 1, 2) ( 3, 4) ( 5, 6) )
The vector vec reversed is:
( ( 5, 6) ( 3, 4) ( 1, 2) )
The iterator pos points to:
( 3, 4 )
The reverse_iterator rpos points to:
( 1, 2 )
reverse_iterator::operator[]
Mengembalikan referensi ke offset elemen dari elemen yang reverse_iterator ditangani oleh sejumlah posisi tertentu.
reference operator[](difference_type Off) const;
Parameter
Off
Offset dari reverse_iterator alamat.
Tampilkan Nilai
Referensi ke offset elemen.
Keterangan
Operator mengembalikan *( *this + Off).
Contoh
// reverse_iterator_ret_ref.cpp
// compile with: /EHsc
#include <iterator>
#include <algorithm>
#include <vector>
#include <iostream>
int main( )
{
using namespace std;
int i;
vector<int> vec;
for (i = 1 ; i < 6 ; ++i )
{
vec.push_back ( 2 * i );
}
vector <int>::iterator vIter;
cout << "The vector vec is: ( ";
for ( vIter = vec.begin ( ) ; vIter != vec.end ( ); vIter++ )
cout << *vIter << " ";
cout << ")." << endl;
vector <int>::reverse_iterator rvIter;
cout << "The vector vec reversed is: ( ";
for ( rvIter = vec.rbegin( ) ; rvIter != vec.rend( ); rvIter++)
cout << *rvIter << " ";
cout << ")." << endl;
vector <int>::iterator pos;
pos = find ( vec.begin ( ), vec.end ( ), 8 );
reverse_iterator<vector<int>::iterator> rpos ( pos );
// Declare a difference type for a parameter
reverse_iterator<vector<int>::iterator>::difference_type diff = 2;
cout << "The iterator pos points to: " << *pos << "." << endl;
cout << "The iterator rpos points to: " << *rpos << "." << endl;
// Declare a reference return type & use operator[]
reverse_iterator<vector<int>::iterator>::reference refrpos = rpos [diff];
cout << "The iterator rpos now points to: " << refrpos << "." << endl;
}
The vector vec is: ( 2 4 6 8 10 ).
The vector vec reversed is: ( 10 8 6 4 2 ).
The iterator pos points to: 8.
The iterator rpos points to: 6.
The iterator rpos now points to: 2.
reverse_iterator::p ointer
Jenis yang menyediakan penunjuk ke elemen yang ditangani oleh reverse_iterator.
typedef typename iterator_traits<RandomIterator>::pointer pointer;
Keterangan
Jenisnya adalah sinonim untuk nama iterator_traits<jenis sifat iterator RandomIterator>::p ointer.
Contoh
// reverse_iterator_pointer.cpp
// compile with: /EHsc
#include <iterator>
#include <algorithm>
#include <vector>
#include <utility>
#include <iostream>
int main( )
{
using namespace std;
typedef vector<pair<int,int> > pVector;
pVector vec;
vec.push_back( pVector::value_type( 1,2 ) );
vec.push_back( pVector::value_type( 3,4 ) );
vec.push_back( pVector::value_type( 5,6 ) );
pVector::iterator pvIter;
cout << "The vector vec of integer pairs is:\n" << "( ";
for ( pvIter = vec.begin ( ) ; pvIter != vec.end ( ); pvIter++)
cout << "( " << pvIter -> first << ", " << pvIter -> second << ") ";
cout << ")" << endl;
pVector::reverse_iterator rpvIter;
cout << "\nThe vector vec reversed is:\n" << "( ";
for ( rpvIter = vec.rbegin( ) ; rpvIter != vec.rend( ); rpvIter++)
cout << "( " << rpvIter -> first << ", " << rpvIter -> second << ") ";
cout << ")" << endl;
pVector::iterator pos = vec.begin ( );
pos++;
cout << "\nThe iterator pos points to:\n"
<< "( " << pos -> first << ", "
<< pos -> second << " )" << endl;
pVector::reverse_iterator rpos (pos);
cout << "\nThe iterator rpos points to:\n"
<< "( " << rpos -> first << ", "
<< rpos -> second << " )" << endl;
}
The vector vec of integer pairs is:
( ( 1, 2) ( 3, 4) ( 5, 6) )
The vector vec reversed is:
( ( 5, 6) ( 3, 4) ( 1, 2) )
The iterator pos points to:
( 3, 4 )
The iterator rpos points to:
( 1, 2 )
reverse_iterator::reference
Jenis yang menyediakan referensi ke elemen yang ditangani oleh reverse_iterator.
typedef typename iterator_traits<RandomIterator>::reference reference;
Keterangan
Jenisnya adalah sinonim untuk nama iterator_traits<RandomIterator>::referencejenis sifat iterator .
Contoh
Lihat reverse_iterator::operator[] atau reverse_iterator::operator* untuk contoh cara mendeklarasikan dan menggunakan reference.
reverse_iterator::reverse_iterator
Membuat default reverse_iterator atau reverse_iterator dari iterator yang mendasar.
reverse_iterator();
explicit reverse_iterator(RandomIterator right);
template <class Type>
reverse_iterator(const reverse_iterator<Type>& right);
Parameter
right
Iterator yang akan disesuaikan dengan reverse_iterator.
Tampilkan Nilai
Default reverse_iterator atau reverse_iterator adaptasi iterator yang mendasar.
Keterangan
Identitas yang menghubungkan semua iterator terbalik dengan iterator yang mendasarnya adalah:
&*(reverse_iterator (i)) == &*(i-1).
Dalam praktiknya, ini berarti bahwa dalam urutan terbalik reverse_iterator akan merujuk ke elemen satu posisi di luar (di sebelah kanan) elemen yang telah dirujuk iterator dalam urutan asli. Jadi jika iterator membahas elemen 6 dalam urutan (2, 4, 6, 8), maka reverse_iterator akan membahas elemen 4 dalam urutan terbalik (8, 6, 4, 2).
Contoh
// reverse_iterator_reverse_iterator.cpp
// compile with: /EHsc
#include <iterator>
#include <algorithm>
#include <vector>
#include <iostream>
int main( )
{
using namespace std;
int i;
vector<int> vec;
for ( i = 1 ; i < 6 ; ++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;
vector <int>::reverse_iterator rvIter;
cout << "The vector vec reversed is: ( ";
for ( rvIter = vec.rbegin( ) ; rvIter != vec.rend( ); rvIter++)
cout << *rvIter << " ";
cout << ")." << endl;
vector <int>::iterator pos;
pos = find ( vec.begin ( ), vec.end ( ), 4 );
cout << "The iterator pos = " << *pos << "." << endl;
vector <int>::reverse_iterator rpos ( pos );
cout << "The reverse_iterator rpos = " << *rpos
<< "." << endl;
}
Lihat juga
<iterator>
Keamanan utas di Pustaka Standar C++
Referensi pustaka standar C++