Problem

2/8

Vektörde yineleyici

Theory Click to read/hide

Yineleyiciler
Kapsayıcılardaki (veri yapıları) öğeleri yinelemenin bir yolu yineleyici'dir (yineleyici ), bunların birkaç türü vardır.
 
Yineleyici - « ; bazı kapsayıcı öğede ve (bazı kapsayıcılar için) önceki/sonraki öğeye gidebilir.

Vektör, en güçlü - rastgele erişim yineleyiciyi(rastgele erişim yineleyici) kullanır.  Bir rasgele erişim yineleyici, sıralı harekete ek olarak vektörün rasgele bir öğesine erişebilir.

Yineleyicilerin Faydaları
1)  Öğeleri silerken ve dizinleri ([]) kullanarak öğeler üzerinde yineleme yaparken, vektörün ötesine geçmemek için kalan öğelerin sayısını her zaman takip etmemiz gerekir ve bir yineleyici kullanarak, vektörün sonunu belirten end()< /code> kullanabilir.
2) Bir yineleyici kullanarak, bir vektördeki öğeleri kolayca dinamik olarak kaldırabilir ve ekleyebilirsiniz. 
 
Yineleyici bildirimi
1) Bir tamsayı vektörü için bir yineleyici bildirmek ve onu vektördeki ilk öğeye işaret etmek. vektör <int> vektörüm = { 1, 2, 3, 4, 5 }; vektör <int>::iterator it = myvector.begin();
2) Bir tamsayı vektörü için yineleyici bildirmek ve bunu vektördeki son 'den sonraki öğeye işaret etmek. vektör <int> vektörüm = { 1, 2, 3, 4, 5 }; vektör <int>::iterator it = myvector.end(); // son elemandan sonraki elemana işaret ediyor, vektör <int>::iterator it1 = myvector.end() - 1 ; // son öğeyi işaret ediyor.  
Bir değer alma ve görüntüleme
Yineleyici tarafından işaret edilen öğeyi alma ve görüntüleme. cout  
Yineleyici konumunu taşı
Yineleyici konumunu 3 konum ileri taşıyın.
ilerlemek(it, 3); 
 
Mevcut bir yineleyiciden yeni bir yineleyici oluşturma
Mevcut olanı temel alan, 3 konum ilerleten yeni bir yineleyici oluşturun. otomatik it1 = sonraki(it, 3);  
Yineleyici kullanarak vektör değerlerini görüntüleme
vector<int>::iterator it; for (it = myvector.begin(); o != myvector.end(); ++it) {   cout<<*it<<" ";  }
Vektör geçişi
Vektörü son öğeden ilk öğeye çaprazlamak için bir ters yineleyici reverse_iterator kullanılır, şu şekilde elde edilir:
1) rbegin() -  vektörün son öğesini işaret eden bir ters yineleyici döndürür, ++ işleminin uygulanması önceki öğeye geçişe yol açar;
2) rend() -  vektörün önceki öğesine işaret eden bir ters yineleyici döndürür, ++ işleminin uygulanması geçişe yol açar  bir sonrakine. vector<int>::reverse_iterator it = myvector.rbegin();  // son öğeyi işaret ediyor vector<int>::reverse_iterator it = myvector.rend();    // bir öğeyi işaret ediyor,   // ilkinden önce gelen,

Problem

Size bir tamsayı dizisi verildi.  reverse_iterator kullanarak bir vektörü tersine çeviren bir program yazın.

Giriş
İlk verilen sayı N - dizideki öğelerin sayısı (1<= N <= 100). Daha sonra N sayıları boşlukla ayrılarak yazılır.
 
Çıktı
Sonuçta ortaya çıkan vektörün tüm öğelerini boşluklarla ayırarak tek bir satırda çıktılayın.
 
Örnek
# Girdi Çıktı
1 5
1 2 3 4 5
5 4 3 2 1
1
#include <iostream>            
2
#include <vector>            
3
using namespace std;            
4
int main()            
5
{            
6
    int n;            
7
    vector<int> myvector;                
8
    cin >> n;            
9
    for(int i=0;i<n;i++)            
10
    {            
11
        int a;            
12
        cin >> a;            
13
        myvector.push_back(a);            
14
    }            
15
    vector<int>::reverse_iterator it;            
16
17
    {            
18
        cout << *it << " ";            
19
    }            
20
 }            

     

Program check result

To check the solution of the problem, you need to register or log in!