当前位置: 首页 > news >正文

C++算法(17):reverse函数用法详解,头文件<algorithm>与实战示例

C++中,std::reverse 函数用于反转容器或数组中元素的顺序,需包含头文件 <algorithm>。以下是其用法详解:

基本用法

函数原型

template <class BidirIt>
void reverse(BidirIt first, BidirIt last);
  • 参数:两个双向迭代器 first 和 last,表示反转的范围 [first, last)(左闭右开)。

  • 作用:将区间内的元素逆序排列。

  • 0

示例代码

1. 反转整个容器
#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;int main() {vector<int> v = {1, 2, 3, 4, 5};reverse(v.begin(), v.end()); // 反转整个vector// v变为 {5, 4, 3, 2, 1}// 输出结果for (int num : v) cout << num << " "; // 输出:5 4 3 2 1return 0;
}
2. 反转数组
int arr[] = {1, 2, 3, 4, 5};
reverse(arr, arr + 5); // 反转整个数组
// arr变为 {5, 4, 3, 2, 1}
3. 反转字符串
string s = "hello";
reverse(s.begin(), s.end()); // s变为 "olleh"
4. 反转部分元素
vector<int> v = {1, 2, 3, 4, 5};
reverse(v.begin(), v.begin() + 3); // 反转前3个元素
// v变为 {3, 2, 1, 4, 5}

注意事项

与成员函数对比

std::list 的 reverse 成员函数更高效,建议优先使用:list<int> lst = {1, 2, 3, 4, 5}; lst.reverse(); // 成员函数,时间复杂度 O(n)

  1. 迭代器有效性:需确保 first 在 last 之前,否则行为未定义。

  2. C风格字符串:反转时需避免包含末尾的 \0,例如:

    char str[] = "hello"; // 实际存储为 {'h','e','l','l','o','\0'}
    reverse(str, str + 5); // 正确:反转前5个字符,得到 "olleh"
    // 错误示例:reverse(str, str + 6); // 包含'\0',导致打印异常
  3. 时间复杂度:O(n),执行 (last - first)/2 次交换。

  4. 容器支持:需支持双向迭代器(如 vectordequeliststring)。单向容器(如 forward_list)需特殊处理。

总结

std::reverse 是一个灵活的工具,适用于大多数支持双向迭代器的容器。使用时需注意迭代器范围和特殊数据结构(如C字符串)的边界条件。

相关文章:

  • Linux基础篇、第一章_01_2安装虚拟机手动安装Rocky Linux 9.5
  • CentOS一键安装MySQL5.7(源码安装)
  • PHP代码-服务器下载文件页面编写
  • tarjan缩点+强联通分量
  • 数据库day-08
  • 医药生产的“神助攻”:疆鸿智能JH-ECT012,EtherCAT转CC LINK IE超靠谱
  • 如何有效保护iOS应用?分享一款实用的IPA混淆工具
  • Java高频面试之并发编程-10
  • 【无需安装额外软件,JavaScript脚本】B站批量取消关注
  • Consul安装部署(Windows环境)
  • 为什么要学习《易经》?
  • ESP32- 开发笔记- 软件开发 4 - GPIO 口
  • 学习基本宠物美容
  • 使用org.java_websocket库第三方库实现广播
  • RISC-V架构低功耗MCU中断控制系统设计
  • 《Vue3学习手记7》
  • 3D Gaussian Splatting部分原理介绍和CUDA代码解读
  • grafana/loki 设置日志保留时间
  • C++的vector中emplace_back() 与 push_back() 的区别
  • 高防 CDN 的防护功能有哪些?从基础防护到智能防御的全面解析
  • 解放日报:上海深化改革开放,系统集成创新局
  • 辽宁省委书记、省长连夜赶赴辽阳市白塔区火灾事故现场,指导善后处置工作
  • 费高云调研党的建设工作:营造风清气正劲足的政治生态
  • 江西省国资委原副主任李键主动向组织交代问题,接受审查调查
  • 玉渊谭天丨“稀土管制让美国慌了”,美军工稀土储备仅够数月
  • 比亚迪一季度日赚亿元,净利润同比翻倍至91.55亿元