std::reverse 和 ranges::reverse、std::sort 和 ranges::sort

news/2025/2/5 13:39:40/

1. std::reverse 和 ranges::reverse 的区别

std::reverse
  • 定义:定义在 <algorithm> 头文件中。

  • 参数:接受两个迭代器(begin 和 end),表示要反转的范围。

  • 用法

    std::reverse(iterator begin, iterator end);
  • 示例

  • std::vector<int> vec = {1, 2, 3, 4, 5};
    std::reverse(vec.begin(), vec.end()); // 反转整个 vector
ranges::reverse
  • 定义:定义在 <ranges> 头文件中,是C++20引入的Ranges库的一部分。

  • 参数:接受一个范围(range),可以直接传递容器或视图。

  • 用法

    ranges::reverse(range);
  • 示例

    #include <ranges>
    std::vector<int> vec = {1, 2, 3, 4, 5};
    ranges::reverse(vec); // 直接反转整个 vector
主要区别
特性std::reverseranges::reverse
参数类型需要传递两个迭代器直接传递一个范围(range)
代码简洁性需要显式指定范围更简洁,直接操作容器
C++版本支持C++98 起支持C++20 起支持
适用范围适用于所有支持迭代器的容器适用于支持范围操作的容器和视图

2. std::sort 和 ranges::sort 的区别

std::sort
  • 定义:定义在 <algorithm> 头文件中。

  • 参数:接受两个迭代器(begin 和 end),表示要排序的范围,还可以传递一个比较函数。

  • 用法

    std::sort(iterator begin, iterator end, Compare comp);
  • 示例

    std::vector<int> vec = {5, 3, 1, 4, 2};
    std::sort(vec.begin(), vec.end()); // 默认升序排序
ranges::sort
  • 定义:定义在 <ranges> 头文件中,是C++20引入的Ranges库的一部分。

  • 参数:接受一个范围(range),可以直接传递容器或视图,还可以传递一个比较函数。

  • 用法

    ranges::sort(range, Compare comp);
  • 示例

    #include <ranges>
    std::vector<int> vec = {5, 3, 1, 4, 2};
    ranges::sort(vec); // 直接排序整个 vector
主要区别
特性std::sortranges::sort
参数类型需要传递两个迭代器直接传递一个范围(range)
代码简洁性需要显式指定范围更简洁,直接操作容器
C++版本支持C++98 起支持C++20 起支持
适用范围适用于所有支持迭代器的容器适用于支持范围操作的容器和视图

http://www.ppmy.cn/news/1569518.html

相关文章

java使用pcap4j进行报文发送和接收

1、pcap4j框架使用的驱动Npcap需要进行安装 2、获取自己window电脑的mac地址设备 在cmd中使用的命令是getmac 使用程序获取服务器本身的mac地址 import org.pcap4j.core.PcapNativeException; import org.pcap4j.core.PcapNetworkInterface; import org.pcap4j.core.Pcaps;…

STM32单片机学习记录(2.2)

一、STM32 13.1 - PWR简介 1. PWR&#xff08;Power Control&#xff09;电源控制 &#xff08;1&#xff09;PWR负责管理STM32内部的电源供电部分&#xff0c;可以实现可编程电压监测器和低功耗模式的功能&#xff1b; &#xff08;2&#xff09;可编程电压监测器&#xff08;…

在排序数组中查找元素的第一个和最后一个位置(力扣)

一.题目介绍 二.题目解析 使用二分进行查找 2.1处理边界情况 如果数组为空&#xff0c;直接返回 [-1, -1]&#xff0c;因为无法找到目标值。 int[] ret new int[2]; ret[0] ret[1] -1; if (nums.length 0) return ret; 2.2查找左端点&#xff08;目标值开始位置&#…

240. 搜索二维矩阵||

参考题解&#xff1a;https://leetcode.cn/problems/search-a-2d-matrix-ii/solutions/2361487/240-sou-suo-er-wei-ju-zhen-iitan-xin-qin-7mtf 将矩阵旋转45度&#xff0c;可以看作一个二叉搜索树。 假设以左下角元素为根结点&#xff0c; 当target比root大的时候&#xff…

用BGP的路由聚合功能聚合大陆路由,效果显著不?

正文共&#xff1a;666 字 11 图&#xff0c;预估阅读时间&#xff1a;1 分钟 之前我们统计过中国境内的IP地址和路由信息&#xff08;你知道中国大陆一共有多少IPv4地址吗&#xff1f;&#xff09;&#xff0c;不过数量比较多&#xff0c;有8000多条。截止到2021年底&#xff…

【Leetcode刷题记录】1456. 定长子串中元音的最大数目---定长滑动窗口即解题思路总结

1456. 定长子串中元音的最大数目 给你字符串 s 和整数 k 。请返回字符串 s 中长度为 k 的单个子字符串中可能包含的最大元音字母数。 英文中的 元音字母 为&#xff08;a, e, i, o, u&#xff09;。 这道题的暴力求解的思路是通过遍历字符串 s 的每一个长度为 k 的子串&#xf…

生成式AI安全最佳实践 - 抵御OWASP Top 10攻击 (上)

今天小李哥将开启全新的技术分享系列&#xff0c;为大家介绍生成式AI的安全解决方案设计方法和最佳实践。近年来&#xff0c;生成式 AI 安全市场正迅速发展。据 IDC 预测&#xff0c;到 2025 年全球 AI 安全解决方案市场规模将突破 200 亿美元&#xff0c;年复合增长率超过 30%…

什么叫DeepSeek-V3,以及与GPT-4o的区别

1. DeepSeek 的故事 1.1 DeepSeek 是什么&#xff1f; DeepSeek 是一家专注于人工智能技术研发的公司&#xff0c;致力于打造高性能、低成本的 AI 模型。它的目标是让 AI 技术更加普惠&#xff0c;让更多人能够用上强大的 AI 工具。 1.2 DeepSeek-V3 的问世 DeepSeek-V3 是…