當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C++ make_reverse_iterator用法及代碼示例


std::make_reverse_iterator() 是 C++ 中的預定義函數,用於為給定迭代器創建 reverse_iterator。此函數有助於以相反的順序迭代數據。

std::make_reverse_iterator() 函數存在於<iterator>頭文件。

用法

std::make_reverse_iterator (iterator);

參數

  • iterator:要轉換為反向迭代器的迭代器。

返回值

  • 它返回給定類型的反向迭代器。

make_reverse_iterator() 的示例

示例1:使用make_reverse_iterator逆序遍曆向量元素。

C++


// C++ Program to illustrate the use of 
// make_reverse_iterator for vector iterator 
#include <iostream> 
#include <iterator> 
#include <vector> 
using namespace std; 
  
int main() 
{ 
    // declaring vector 
    vector<int> v = { 10, 20, 30, 40, 50 }; 
  
    // creating a iterator using v.end() 
    auto rIter = make_reverse_iterator(v.end()); 
  
    // printing in reverse order 
    for (auto iter = rIter; iter != v.rend(); ++iter) { 
        std::cout << *iter << " "; 
    } 
  
    return 0; 
}
輸出
50 40 30 20 10 

在此代碼中,我們有一個大小為 5 的向量,在下一行中,我們通過傳遞向量的 end() 迭代器,使用 make_reverse_iterator() 函數創建了反向迭代器 (rIter)。 rIter 指向向量的最後一個元素,因此我們隻需要迭代 rIter 直到 rIter 指向向量的第一個元素。

示例 2:使用 make_reverse_iterator() 以相反的順序以大寫字母打印整個字符串

C++


// C++ program to print reverse of string in upper case 
// using make_reverse_iterator 
#include <algorithm> 
#include <iostream> 
#include <iterator> 
#include <string> 
using namespace std; 
  
int main() 
{ 
    // defining string 
    string name = "vikash mishra"; 
  
    // creating reverse iterator 
    auto rIter = make_reverse_iterator(name.end()); 
  
    // printing string character by character 
    for (auto iter = rIter; iter != name.rend(); ++iter) { 
        int k = *iter; 
        if (k == 32) { 
            cout << char(k); 
        } 
        else { 
            cout << char(k - 32) << " "; 
        } 
    } 
    cout << endl; 
  
    return 0; 
}
輸出
A R H S I M  H S A K I V 

在此示例中,我們將整個字符串打印為大寫。方法與前麵的示例類似,但主要區別是將小字符轉換為大寫字符,這是通過從小字符的 ASCII 值中減去 32 來完成的(例如 - ‘a’ ASCII 值為 97,因此 97-32 = 65,這是 A) 的 ASCII 值。



相關用法


注:本文由純淨天空篩選整理自vikash_mishra大神的英文原創作品 make_reverse_iterator Function in C++。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。