reverse_iterator Sınıfı
Sınıf şablonu, rastgele erişim veya çift yönlü yineleyici gibi davranan bir ters yineleyici nesnesini tanımlayan bir yineleyici bağdaştırıcısıdır. Bir aralığın geriye doğru geçişini sağlar.
Sözdizimi
template <class RandomIterator>
class reverse_iterator
Parametreler
RandomIterator Tersine çalışacak şekilde uyarlanacak yineleyiciyi temsil eden tür.
Açıklamalar
Mevcut C++ Standart Kitaplığı kapsayıcıları da, üye işlevleri rbegin
tanımlayıp bunları tanımlar reverse_iterator
const_reverse_iterator
ve bunlara sahip olur ve rend
ters yineleyiciler döndürür. Bu yineleyicilerde üzerine yazma semantikleri vardır. Bağdaştırıcı reverse_iterator
, ekleme semantiği sunduğundan ve akışlarla da kullanılabildiğinden bu işlevi tamamlar.
reverse_iterator
Çift yönlü yineleyici gerektiren, yalnızca rastgele erişim yineleyicileriyle kullanılabilen , operator-=
operator+
, , operator-
veya operator[]
üye işlevlerini operator+=
çağırmamalıdır.
Yineleyici aralığı [ilk, son) şeklindedir; burada soldaki köşeli ayraç birincinin dahil edilmesini, sağ taraftaki parantez ise en son hariç olan öğelerin dahil edilmesini gösterir. Aynı öğeler ters çevrilmiş diziye dahil edilir [ önce rev - , rev - last) böylece son bir dizideki bir-geçmiş-son öğesiyse, ters çevrilmiş dizideki ilk öğe rev - *(son - 1) öğesini gösterir. Tüm ters yineleyicileri temel yineleyicileriyle ilişkilendiren kimlik:
&*(reverse_iterator (i)) == &*(i - 1).
Uygulamada, bunun anlamı ters dizideki reverse_iterator öğesinin, yineleyicinin özgün dizinde başvurduğu öğenin bir ötesindeki (sağındaki) konuma başvuracağıdır. Bu nedenle, bir yineleyici dizideki 6 öğesini (2, 4, 6, 8) ele aldıysa reverse_iterator
, ters çevrilmiş dizideki 4 öğesini (8, 6, 4, 2) ele alır.
Oluşturucular
Oluşturucu | Açıklama |
---|---|
reverse_iterator | Temel alınan bir yineleyiciden varsayılan reverse_iterator veya reverse_iterator bir oluşturur. |
Tür tanımları
Tür adı | Açıklama |
---|---|
difference_type | Aynı kapsayıcı içindeki öğelere başvuran iki reverse_iterator öğe arasındaki farkı sağlayan bir tür. |
iterator_type | bir için temel yineleyici sağlayan bir reverse_iterator tür. |
Işaretçi | tarafından adreslenen bir öğeye işaretçi sağlayan tür reverse_iterator . |
referans | tarafından ele alınan bir öğeye başvuru sağlayan bir reverse_iterator tür. |
Üye işlevleri
Üye işlevi | Açıklama |
---|---|
temel | Temel alınan yineleyiciyi konumundan reverse_iterator kurtarır. |
İşleçler
Operator | Açıklama |
---|---|
operator_star | Bir reverse_iterator adresle ilgili öğesini döndürür. |
işleç+ | Yineleyiciye bir uzaklık ekler ve eklenen öğeyi yeni reverse_iterator uzaklık konumunda adresleyen yeni öğesini döndürür. |
operator++ | öğesini reverse_iterator sonraki öğeye artırır. |
operator+= | bir 'den reverse_iterator belirtilen uzaklığı ekler. |
operatör- | bir uzaklığı'ndan reverse_iterator çıkarır ve uzaklık konumunda öğeyi adresleyen bir reverse_iterator döndürür. |
operatör-- | reverse_iterator öğesini önceki öğeye geri alır. |
operator-= | Belirtilen uzaklığı bir reverse_iterator 'den çıkarır. |
operatör-> | tarafından reverse_iterator adreslenen öğeye yönelik bir işaretçi döndürür. |
operator[] |
Belirtilen sayıda konum tarafından adreslenen reverse_iterator öğeden bir öğe uzaklığı başvurusu döndürür. |
Gereksinimler
Üst bilgi:<yineleyici>
Ad alanı: std
reverse_iterator::base
Temel alınan yineleyiciyi konumundan reverse_iterator
kurtarır.
RandomIterator base() const;
Dönüş Değeri
öğesinin temel alınan yineleyicisi reverse_iterator
.
Açıklamalar
Tüm ters yineleyicileri temel yineleyicileriyle ilişkilendiren kimlik:
&*(reverse_iterator
(i)) == &*(i - 1).
Uygulamada bu, ters çevrilmiş dizide yineleyicinin özgün dizide reverse_iterator
başvurduğu öğenin (sağında) bir konumun ötesindeki öğeye başvuracağı anlamına gelir. Bu nedenle, bir yineleyici dizideki 6 öğesini (2, 4, 6, 8) ele aldıysa reverse_iterator
, ters çevrilmiş dizideki 4 öğesini (8, 6, 4, 2) ele alır.
Örnek
// 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
Aynı kapsayıcı içindeki öğelere başvuran iki reverse_iterator
öğe arasındaki farkı sağlayan bir tür.
typedef typename iterator_traits<RandomIterator>::difference_type difference_type;
Açıklamalar
Fark reverse_iterator
türü yineleyici fark türüyle aynıdır.
Tür, RandomIterator::p ointer yineleyici özellik tür adı iterator_traits
<için bir eş anlamlıdır.>
Örnek
nasıl bildirilip kullanılacağına difference_type
ilişkin bir örnek için bkzreverse_iterator::operator[]
. .
reverse_iterator::iterator_type
bir için temel yineleyici sağlayan bir reverse_iterator
tür.
typedef RandomIterator iterator_type;
Açıklamalar
türü, şablon parametresi Iterator
için bir eş anlamlıdır.
Örnek
bildirme ve kullanma iterator_type
örneği için bkz. reverse_iterator::base.
reverse_iterator::operator*
bir reverse_iterator adreslediğini öğesini döndürür.
reference operator*() const;
Dönüş Değeri
reverse_iterator tarafından ele alınan öğelerin değeri.
Açıklamalar
işleci *( geçerli - 1) döndürür.
Örnek
// 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+
Yineleyiciye bir uzaklık ekler ve eklenen öğeyi yeni reverse_iterator
uzaklık konumunda adresleyen yeni öğesini döndürür.
reverse_iterator<RandomIterator> operator+(difference_type Off) const;
Parametreler
Kapalı
Ters yineleyiciye eklenecek uzaklık.
Dönüş Değeri
reverse_iterator
Uzaklık öğesini ele alan bir.
Açıklamalar
Bu üye işlevi yalnızca rastgele erişim yineleyicisinin gereksinimlerini karşılıyorsa reverse_iterator
kullanılabilir.
Örnek
// 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++
reverse_iterator önceki öğeye artırır.
reverse_iterator<RandomIterator>& operator++();
reverse_iterator<RandomIterator> operator++(int);
Dönüş Değeri
İlk işleç, öncremented reverse_iterator
değerini döndürür ve ikincisi olan postincrement işleci, artımlı reverse_iterator
öğesinin bir kopyasını döndürür.
Açıklamalar
Bu üye işlevi yalnızca çift yönlü yineleyici gereksinimlerini karşılıyorsa reverse_iterator
kullanılabilir.
Örnek
// 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+=
Bir reverse_iterator belirtilen uzaklığı ekler.
reverse_iterator<RandomIterator>& operator+=(difference_type Off);
Parametreler
Kapalı
Yineleyicinin artırıldığı uzaklık.
Dönüş Değeri
tarafından ele alınan öğesine başvuru reverse_iterator
.
Örnek
// 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-
bir uzaklığı'ndan reverse_iterator
çıkarır ve uzaklık konumunda öğeyi adresleyen bir reverse_iterator
döndürür.
reverse_iterator<RandomIterator> operator-(difference_type Off) const;
Parametreler
Kapalı
reverse_iterator çıkarılacak uzaklık.
Dönüş Değeri
reverse_iterator
Uzaklık öğesini ele alan bir.
Açıklamalar
Bu üye işlevi yalnızca rastgele erişim yineleyicisinin gereksinimlerini karşılıyorsa reverse_iterator
kullanılabilir.
Örnek
// 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--
reverse_iterator önceki öğeye geri alır.
reverse_iterator<RandomIterator>& operator--();
reverse_iterator<RandomIterator> operator--(int);
Dönüş Değeri
İlk işleç önceden reverse_iterator
belirlenmiş ve ikincisi olan postdecrement işleci, azalan reverse_iterator
değerinin bir kopyasını döndürür.
Açıklamalar
Bu üye işlevi yalnızca çift yönlü yineleyici gereksinimlerini karşılıyorsa reverse_iterator
kullanılabilir.
Örnek
// 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-=
Belirtilen uzaklığı bir reverse_iterator
'den çıkarır.
reverse_iterator<RandomIterator>& operator-=(difference_type Off);
Parametreler
Kapalı
'den reverse_iterator
çıkarılacak uzaklık.
Açıklamalar
Bu üye işlevi yalnızca rastgele erişim yineleyicisinin gereksinimlerini karşılıyorsa reverse_iterator
kullanılabilir.
işleci geçerli + Kapalı değerini değerlendirir ve döndürür.*this
Örnek
// 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->
tarafından reverse_iterator
adreslenen öğeye yönelik bir işaretçi döndürür.
pointer operator->() const;
Dönüş Değeri
tarafından adreslenen öğesinin işaretçisi reverse_iterator
.
Açıklamalar
işleci döndürür &**this
.
Örnek
// 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[]
Belirtilen sayıda konum tarafından adreslenen reverse_iterator
öğeden bir öğe uzaklığı başvurusu döndürür.
reference operator[](difference_type Off) const;
Parametreler
Kapalı
Adresten uzaklık reverse_iterator
.
Dönüş Değeri
Öğe uzaklığı başvurusu.
Açıklamalar
işleci ( *this
+ Off
) döndürür.*
Örnek
// 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
tarafından adreslenen bir öğeye işaretçi sağlayan tür reverse_iterator
.
typedef typename iterator_traits<RandomIterator>::pointer pointer;
Açıklamalar
Tür, RandomIterator::p ointer yineleyici özellik tür adı iterator_traits
<için bir eş anlamlıdır.>
Örnek
// 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
reverse_iterator tarafından ele alınan bir öğeye başvuru sağlayan tür.
typedef typename iterator_traits<RandomIterator>::reference reference;
Açıklamalar
türü, yineleyici özellik tür adı iterator_traits<RandomIterator>::reference
için bir eş anlamlıdır.
Örnek
bildirme ve kullanma reference
örnekleri için bkzreverse_iterator::operator[]
. veya reverse_iterator::operator*
reverse_iterator::reverse_iterator
Temel alınan bir yineleyiciden varsayılan reverse_iterator
veya reverse_iterator
bir oluşturur.
reverse_iterator();
explicit reverse_iterator(RandomIterator right);
template <class Type>
reverse_iterator(const reverse_iterator<Type>& right);
Parametreler
Sağ
Bir öğesine uyarlanacak reverse_iterator
yineleyici.
Dönüş Değeri
Varsayılan reverse_iterator
veya reverse_iterator
temel alınan yineleyiciyi uyarlama.
Açıklamalar
Tüm ters yineleyicileri temel yineleyicileriyle ilişkilendiren kimlik:
&*(reverse_iterator (i)) == &*(i-1)
.
Uygulamada, bunun anlamı ters dizideki reverse_iterator öğesinin, yineleyicinin özgün dizinde başvurduğu öğenin bir ötesindeki (sağındaki) konuma başvuracağıdır. Bu nedenle, bir yineleyici dizideki 6 öğesini (2, 4, 6, 8) ele aldıysa reverse_iterator
, ters çevrilmiş dizideki 4 öğesini (8, 6, 4, 2) ele alır.
Örnek
// 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;
}
Ayrıca bkz.
<Yineleyici>
C++ Standart Kitaplığında İş Parçacığı Güvenliği
C++ Standart Kitaplığı Başvurusu