当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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++。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。