C++ reverse函数使用

2023-10-29

[STL]C++ reverse、remove、remove_if

1、reverse函数使用

函数功能:将序列[first,last)的元素在原容器中颠倒重排,包含在algorithm库中

C++头文件 -------------- #include

reverse函数用于反转在 [first,last)范围内的顺序(包括first指向的元素,不包括last指向的元素);

reverse函数没有返回值;

时间复杂度O(n);

eg:

1、交换vector容器中元素的顺序

vector<int> v = {5,4,3,2,1}; 
reverse(v.begin(),v.end());//v的值为1,2,3,4,5

2、string类的字符串

string str="abcd";
reverse(str.begin(),str.end());//str结果为dcba

备注leetcode 1190题,反转每对括号间的子串中使用。

2、remove和remove_if函数

2.1、remove(beg,end,const T& value) //移除区间【beg,end)中每一个“value”相同的元素。

remove只是通过迭代器的指针向前移动来删除,将没有被删除的元素放在链表的前面,并返回一个指向新的超尾值的迭代器。由于remove()函数不是成员,因此不能调整链表的长度。remove()函数并不是真正的删除,要想真正删除元素则可以使用erase()或者resize()函数。用法如下:

string s="xxxxx(x";
s.erase(remove(s.begin(), s.end(), '('), s.end());

2.2、 remove_if(beg, end, op) //移除区间[beg,end)中每一个“令判断式:op(elem)获得true”的元素;

remove_if(remove和unique也是相同情况)的参数是迭代器,通过迭代器无法得到容器本身,而要删除容器内的元素只能通过容器的成员函 数来进行,因此remove系列函数无法真正删除元素,只能把要删除的元素移到容器末尾并返回要被删除元素的迭代器,然后通过erase成员函数来真正删除。用法如下:

bool IsSpace(char x) { return x == ' '; }
string str2 = "with some  spaces";
str2.erase(remove_if(str2.begin(),str2.end(),IsSpace),str2.end()); // "withsomespaces"

备注leetcode 1190题,反转每对括号间的子串中使用,清除括号使用:

leetcode 1190代码如下:

    string reverseParentheses(string s) {
        vector <int> tempV;
        for (int i =0 ;i <s.length();i++)
        {
            if (s[i]== '(')
            {
                tempV.push_back(i);
            }
            else if (s[i]==')')
            {
                int l= tempV.back();
                reverse(s.begin() + l + 1, s.begin() + i);
                tempV.pop_back();
            }
        }
        processString(s);
        return s;
    }
    void processString(string &s)
    {
        s.erase(remove(s.begin(), s.end(), '('), s.end());
        s.erase(remove(s.begin(), s.end(), ')'), s.end()); 
    }
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ reverse函数使用 的相关文章

  • 陈关荣

    2019年12月12日 自然 Nature 杂志登出了玛加丽塔 萨拉斯 法尔格拉斯 Margarita Salas Falgueras 1938年11月30日 2019年11月7日 去世的讣告 萨拉斯于11月7日去世 享年80岁 她是把现代
  • java学习之增删改查的客户信息管理软件

    1 MVC的设计模式 模型层 控制层 视图层 2 构建4个包 com ca bean 实体对象 用来封装客户信息 com ca service 对象的管理模块 内部用数组管理一组Customer对象 并提供相应的添加 修改 删除和遍历方法
  • 利用jQuery做tab栏切换

    1 结构布局 div class tab div class tab list ul li class current 商品介绍 li li 规格与包装 li li 售后保障 li li 商品评价 5000 li li 手机社区 li ul
  • 什么是ABI

    复杂度2 5 机密度3 5 最后更新2021 04 24 ABI是Application Binary Interface的缩写 任何写过代码的码农都知道什么是API 这是平台系统为应用程序提供的预先写好的模块 完成一系列的基础功能 那么
  • linux var log目录作用,Linux系统/var/log/journal/垃圾日志清理 - 米扑博客

    CentOS系统中有两个日志服务 分别是传统的 rsyslog 和 systemd journal ls l etc logrotate d rw r r 1 root root 91 Apr 11 2018 bootlog rw r r
  • 李宏毅深度学习-回归

    目录 1 梯度下降 2 bias和variance 1 梯度下降 利用梯度下降寻找最优解是 如果在该点的梯度为负 向下 则需要增加参数大小 如果梯度为正 向上 则需要减小参数大小 计算时 减去学习率 偏导表示和梯度方向反向 即负的就要增加
  • Handler消息传递机制(一)

    1 定义 一套 Android 消息传递机制 2 作用 在多线程的应用场景中 将工作线程中需更新UI的操作信息 传递到 UI主线程 从而实现 工作线程对UI的更新处理 最终实现异步消息的处理 3 意义 问 为什么要用 Handler消息传递
  • python中保存np.save出错

    python中保存np save出错 代码如下 求大神解释一下
  • HTTP(S)协议详解

    1 什么是协议 协议 网络协议的简称 网络协议是通信计算机双方必须共同遵从的一组约定 如怎么样建立连接 怎么样互相识别等 只有遵守这个约定 计算机之间才能相互通信交流 粗俗理解协议就是 比如你的电脑和我的电脑要通信 我们之间的交流为什么互相
  • Mysql8的备份脚本 ,基于xtrabackup8.0

    Mysql8的备份脚本 基于xtrabackup8 0 注意 xtrabackup8 0与mysql8直接的版本依赖强 安装xtra后可查看支持的Mysql8版本 xtrabackup8 下载页面 https centos pkgs org
  • 后台管理系统布局以及跳转,点击菜单局部刷新,右侧显示对应界面完整版

    源码地址 https gitee com nggLee java funny 1 进入站长之家https sc chinaz com 2 搜索后台管理模版 下载一个 本次使用的模版 https sc chinaz com moban 160
  • CONST

    定义 编辑 const修饰的数据类型是指常类型 常类型的变量或对象的值是不能被更新的 目的 编辑 const 推出的初始目的 正是为了取代预编译指令 消除它的缺点 同时继承它的优点 主要作用 编辑 1 可以定义const常量 具有不可变性
  • 如何在一个中文大模型上,加入招投标字段标注的数据,搭建一个招投标字段解析的Transformer模型?

    ChatGPT方案1 在一个中文大模型上加入招投标字段标注的数据 并搭建招投标字段解析的Transformer模型可以通过以下步骤实现 收集并标注招投标相关的数据 可以使用现有的数据集 也可以通过爬虫技术获取相关数据 然后进行人工标注 标注
  • Ubuntu下安装和管理不同版本CMake,根据软件安装的需要选用不同版本的CMake

    0 Foreword 在安装VTK Visualization Toolkit 时发现需要用3 12版本以上的CMake才行 但是系统带的是3 10版本的 这时可以有两个方法 最简单粗暴就是把系统原本的CMake覆盖了 重新装新版 其次是麻
  • 快速了解时间敏感网络(TSN)_Part1

    在过去的几年间 以太网凭借开放的协议 良好的扩展性以及较高的带宽等优势为自己在车载领域赢得了一席之地 随着车载应用范围的扩大 也有越来越多的以太网技术涌现出来 今天我们就来聊一聊时间敏感网络 TSN 让大家快速了解这一技术 话不多说 大家坐
  • IDEA 快速生成项目结构的文档树形式

    参考文献 taodudu idea快速生成项目结构图 参考日期 2023 05 17 需求 在写文档的时候 想把项目结构输出成文档树的形式 实现 在 IDEA 中 可以点击下方 Terminal 按钮或 Alt F12 打开终端 同理 在命
  • 旋转矩阵 推导

    旋转变换 一 旋转矩阵 1 简介 计算机图形学中的应用非常广泛的变换是一种称为仿射变换的特殊变换 在仿射变换中的基本变换包括平移 旋转 缩放 剪切这几种 本文以及接下来的几篇文章重点介绍一下关于旋转的变换 包括二维旋转变换 三维旋转变换以及
  • vue3+vite+TS如何实现水印

    水印是通过canvas画图来实现的 首先需要创建一个ts的文件夹 之后在APP vue中全局加入水印 这样就可使全部页面都有水印 如果想要某个页面实现水印只需要单独写在页面即可 这里的判断主要是判断是否登录 登陆时再加上水印 如若不需要判断

随机推荐

  • 无需MS Office创建Excel!再C ++中以编程方式在Excel电子表格中创建图表

    图表是简洁显示数据的绝佳工具 此外 它们以可视方式表示数据 从而更易于使用大量数据 在需要显示数据 例如每月预算比较或产品采用率 的情况下 图表可能会有所帮助 有鉴于此 本文将教您如何使用C 在Excel文件中创建图表 使用C 在Excel
  • 多项目管理五大特点

    多项目管理建立在一般项目管理的基础上 所以它具有项目管理的所有特点 同时 多项目管理无论在内涵还是外延方面 都处在不断完善的发展中 具有区别于一般的单项目管理的特点 战略性 单项目管理注重项目本身的计划 执行及控制 并确保提交合格的最终项目
  • [python] ThreadPoolExecutor线程池

    初识 Python中已经有了threading模块 为什么还需要线程池呢 线程池又是什么东西呢 在介绍线程同步的信号量机制的时候 举得例子是爬虫的例子 需要控制同时爬取的线程数 例子中创建了20个线程 而同时只允许3个线程在运行 但是20个
  • LTS-局部时间步,自动调节步长技术

    在查看interFoam求解器时 会发现其中引入了LTS if LTS include setRDeltaT H 那么它的含义和功能是什么呢 LTS locall time step 是一种局部时间步求解器 该求解器建立于局部时间步下 它会
  • 小米官网(前一部分)html

  • QMessageBox 消息框

    QMessageBox QMessageBox是Qt框架提供的用于弹出消息对话框的类 它可以用于显示一些提示信息 警告信息 错误信息等 QMessageBox的使用非常简单 只需要调用静态方法即可弹出对话框 QMessageBox info
  • 【深度学习】 Python 和 NumPy 系列教程(十四):Matplotlib详解:1、2d绘图(下):箱线图、热力图、面积图、等高线图、极坐标图

    目录 一 前言 二 实验环境 三 Matplotlib详解 1 2d绘图类型 0 设置中文字体 1 5 折线图 散点图 柱状图 直方图 饼图 6 箱线图 Box Plot 7 热力图 Heatmap 8 面积图 Area Plot 9 等高
  • 2021年深度学习的医学图像分割技术研究进展

    基于深度学习的医学图像分割技术研究进展 闫 超 孙占全 田恩刚 赵杨洋 范小燕 摘 要 医学图像分割在临床诊断中发挥着重要作用 也是其他医学图像处理方法的基础 随着计算机硬件性能的提高 基于深度学习的图像分割技术已成为处理医学图像的有力工具
  • CTF MISC压缩包简单题学习思路总结(持续更新)

    系列文章目录 太复杂了 已经懒得写目录了 怎么我自己分了这么多篇CTF简单题思路总结啊 我真是太菜了 各位大佬有兴趣可以去分类专栏看一看 文章目录 系列文章目录 前言 一 压缩包识别 修复 二 压缩包伪加密 三 压缩包破解 3 1 暴力破解
  • Matlab比较2个 二维矩阵 或 二维图像 相似度的方法总结

    1 corr2 A B cor corr2 A B 2 通过直方图相似性比较 参考 https blog csdn net xiaojianzhao article details 103785809 如果两张图像的直方图一样 或者有极高的
  • 初始C语言——统计单词

    define CRT SECURE NO WARNINGS 1 防止visual studio2013以上版本scanf报错 vc6 0环境可忽略 include
  • python算法中的深度学习算法之深度信念网络(详解)

    目录 学习目标 学习内容 深度信念网络 预训练 微调 学习目标 一分钟掌握 python算法中的深度学习算法之深度信念网络 入门知识
  • pip安装jupyter notebook后找不到jupyter notebook命令

    安装jupyter pip install jupyter notebook 配置环境变量 在系统变量的path中添加一下路径 YourUsername是你的用户名 C Users YourUsername AppData Roaming
  • 【转载】[python基础] python中变量存储的方式

    为了解决刚刚python 2 循环运算中 变量存储的地址与期望值的地址不同的问题 稍微检索了下python中变量的存储方式 虽然并没有解决问题 但应该可以猜测是python 3更新期间 修改 或者说bugfix 了变量存储的方式 所以在py
  • 斯坦福大学吴恩达教授联手OpenAI上线chatGPT免费课程

    斯坦福大学吴恩达教授和 OpenAI 一起制作了四个关于 ChatGPT 的短课程 一共有四个课 每个课都是一个小时左右 并且每个课被分成了多个小节 建议收看的顺序是 1 ChatGPT Prompt Engineering for Dev
  • spring ajax传输json

    ajax传输文件 主要用一个jquery文件来执行 链接 https pan baidu com s 12 YznRvPxxsvADqbKSoseg 提取码 lphb 发送Ajax请求要 用到 js jquery文件 为了 防止 静态文件被
  • 论文阅读-Joint Audio-Visual Deepfake Detection(音视频Deepfake检测)

    一 论文信息 论文名称 Joint Audio Visual Deepfake Detection 会议 ICCV2021 作者团队 二 动机与创新 动机 Visual deepfake上有许多检测方法和数据集 而对audio deepfa
  • css滚动条样式属性

    webkit scrollbar 滚动条整体部分 可以设置宽度 webkit scrollbar button 滚动条两端的按钮 webkit scrollbar track 外层轨道 webkit scrollbar track piec
  • FIO详解

    fio Flexible IO Tester 一 服务器配置 由于我们想通过fio得到SSD真实的参数信息 因此我们需要服务器BIOS一些参数的配合 以便能更好的体现硬盘的性能 以华为1288HV5为例 二 fio 1 安装 a 下载地址
  • C++ reverse函数使用

    STL C reverse remove remove if 1 reverse函数使用 函数功能 将序列 first last 的元素在原容器中颠倒重排 包含在algorithm库中 C 头文件 include reverse函数用于反转