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.
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_iteratortü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_iteratortür. |
Üye işlevleri
| Üye işlevi | Açıklama |
|---|---|
| temel | Temel alınan yineleyiciyi konumundan reverse_iteratorkurtarı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_iteratorbelirtilen 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_iteratoradreslenen öğ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_iteratorkurtarı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_typeilişkin bir örnek için bkzreverse_iterator::operator[]. .
reverse_iterator::iterator_type
bir için temel yineleyici sağlayan bir reverse_iteratortür.
typedef RandomIterator iterator_type;
Açıklamalar
türü, şablon parametresi Iteratoriç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_iteratordeğ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_iteratoradreslenen öğ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>::referenceiç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_iteratoryineleyici.
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