首页 > 编程语言 >C++ std::reverse函数

C++ std::reverse函数

时间:2024-03-26 11:56:13浏览次数:19  
标签:std last reverse C++ BidirIt first

函数原型,定义

std::reverse

定义于头文件 <algorithm>

 1 (1)
 2 template< class BidirIt >
 3 void reverse( BidirIt first, BidirIt last );(C++20 前)
 4 
 5 template< class BidirIt >
 6 constexpr void reverse( BidirIt first, BidirIt last );(C++20 起)
 7 
 8 (2)
 9 template< class ExecutionPolicy, class BidirIt >
10 void reverse( ExecutionPolicy&``& policy, BidirIt first, BidirIt last );    (C++17 起)

1.反转 [first, last) 范围中的元素顺序
表现如同应用 std::iter_swap 到对于非负 i < (last-first)/2 的每对迭代器 first+i, (last-i) - 1
2.同 (1) ,但按照 policy 执行。此重载仅若 std::is_execution_policy_v<std::decay_t> 为 true 才参与重载决议。
可能实的现:

1 template<class BidirIt>
2 void reverse(BidirIt first, BidirIt last)
3 {
4     while ((first != last) && (first != --last)) {
5         std::iter_swap(first++, last);
6     }
7 }

应用实例

 1 #include <vector>
 2 #include <iostream>
 3 #include <iterator>
 4 #include <algorithm>
 5  
 6 int main()
 7 {
 8     std::vector<int> v{1,2,3};
 9     std::reverse(std::begin(v), std::end(v));
10     for(auto e : v) std::cout << e;
11     std::cout << '\n';
12  
13     int a[] = {4, 5, 6, 7};
14     std::reverse(std::begin(a), std::end(a));
15     for(auto e : a) std::cout << e;
16 }
17 
18 输出:
19 321
20 7654

 

标签:std,last,reverse,C++,BidirIt,first
From: https://www.cnblogs.com/ybqjymy/p/18096334

相关文章

  • std::promise
    std::promise的作用就是提供一个不同线程之间的数据同步机制,它可以存储一个某种类型的值,并将其传递给对应的future,即使这个future与promise不在同一个线程中也可以安全的访问到这个值。std::promise<int>promiseObj;可以通过get_future()来获取与该promise对象相关联的......
  • C++的四种强制类型转换符,看了就懂
    运行时类型检查转换dynamic_cast用途及条件1、基类要有虚函数2、主要用于“安全地向下转型”解释1、为什么基类要有虚函数?答:dynamic_cast在运行时会进行类型检查,这种检查不是语法上的检查,而是真实情况地检查。如何检查?如果代码中使用了强制类型转换dynamic_cast,编译器会......
  • C++缺省参数与函数重载
    1.缺省参数1.1定义即函数声明或定义时为函数指定一个缺省值,如果调用函数时传入参数,则变量的值为实参的值,如果调用时未传入参数,则变量的值为缺省值。//其中a=0即为定义的缺省值voidFun_test(inta=0){ cout<<"a="<<a<<endl;}intmain(){//传入参数,a......
  • 用Dev C++实现NOKIA经典游戏贪吃蛇
    前期准备头文件:#include<bits/stdc++.h>#include<stdio.h>#include<conio.h>#include<windows.h>控制界面配置:voidcolor(intx){ SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),x);}//设置不同颜色voidHide(){ HANDLEhOut; CONSOLE_CUR......
  • 学会在 C++ 中使用变量:从定义到实践
    C++变量变量是用于存储数据值的容器。在C++中,有不同类型的变量(使用不同的关键字定义),例如:int-存储整数(没有小数点),例如123或-123double-存储浮点数,带有小数点,例如19.99或-19.99char-存储单个字符,例如'a'或'B'。字符值用单引号括起来string-存储文本,例如......
  • C++调用C# (使用C++/CLI)
    简介C++/CLI简介见上文 C#调用C++(使用C++/CLI)-咸鱼翻身?-博客园(cnblogs.com)新建解决方案->CPlusCSharpSolution新建C#类库->CSharpNative新建类NativeCalculate1publicclassNativeCalculate2{3publicintAdd(inta,intb)4{......
  • C#调用C++ (使用C++/CLI)
    简介C++/CLI(C++CommonLanguageInfrastructure)是一种允许在.NET平台上创建托管代码(managedcode)和非托管代码(unmanagedcode)之间互操作的语言。其原理可以概括如下:编译器支持:C++/CLI编译器能够编译同时包含托管和非托管代码的源文件。这使得在同一个项目中可以混合使用......
  • 蓝桥杯n皇后问题C++
    用到了dfs算法#include<iostream>usingnamespacestd;intn;inta[10][10]={0};intsum=0;voidprin(inta[][10]){for(inti=0;i<n;i++){for(intj=0;j<n;j++){cout<<a[i][j]<......
  • C++动态内存管理
    目录C/C++内存分配C++内存管理C++内存管理介绍C++内存管理使用C++内存管理基本语法operatornew和operatordelete函数定位new表达式(placement-new)基本语法使用场景malloc/free和new/delete相同点不同点C/C++内存分配在C语言动态内存管理章节已经了解到内......
  • C++中用户自定义数据类型
    在C++中,用户自定义数据类型通常指的是通过struct、class、enum和typedef关键字定义的类型。这些自定义类型可以包含各种成员,包括基本数据类型、其他自定义类型、成员函数(对于class)、访问修饰符等。下面是这些自定义数据类型可以包含的组件的概述:结构体(struct)结构体是一种......