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

sort和swap函数

在 C++ 中,sort 和 swap 是两个非常实用的函数,下面为你详细介绍它们。

sort 函数

功能

sort 函数定义在 <algorithm> 头文件中,用于对容器内的元素进行排序,默认使用的是升序排序,其底层实现通常是基于快速排序、堆排序和插入排序的混合算法,时间复杂度平均为 O(nlogn)。

函数原型

cpp

// 对 [first, last) 范围内的元素进行排序,使用 operator< 进行比较
template< class RandomIt >
void sort( RandomIt first, RandomIt last );// 对 [first, last) 范围内的元素进行排序,使用给定的比较函数 comp
template< class RandomIt, class Compare >
void sort( RandomIt first, RandomIt last, Compare comp );
示例代码

cpp

#include <iostream>
#include <algorithm>
#include <vector>int main() {std::vector<int> numbers = {5, 2, 9, 1, 5, 6};// 默认升序排序std::sort(numbers.begin(), numbers.end());std::cout << "升序排序结果: ";for (int num : numbers) {std::cout << num << " ";}std::cout << std::endl;// 使用自定义比较函数进行降序排序std::sort(numbers.begin(), numbers.end(), [](int a, int b) {return a > b;});std::cout << "降序排序结果: ";for (int num : numbers) {std::cout << num << " ";}std::cout << std::endl;return 0;
}
代码解释
  • 首先,包含了必要的头文件 <iostream><algorithm> 和 <vector>
  • 定义了一个 std::vector<int> 类型的容器 numbers,并初始化了一些元素。
  • 调用 std::sort(numbers.begin(), numbers.end()) 对容器中的元素进行升序排序。
  • 调用 std::sort(numbers.begin(), numbers.end(), [](int a, int b) { return a > b; }) 使用自定义的 lambda 函数作为比较函数,对容器中的元素进行降序排序。

swap 函数

功能

swap 函数同样定义在 <algorithm> 头文件中,用于交换两个对象的值。

函数原型

cpp

// 交换两个对象的值
template< class T >
void swap( T& a, T& b );
示例代码

cpp

#include <iostream>
#include <algorithm>int main() {int a = 10;int b = 20;std::cout << "交换前: a = " << a << ", b = " << b << std::endl;std::swap(a, b);std::cout << "交换后: a = " << a << ", b = " << b << std::endl;return 0;
}
代码解释
  • 包含了必要的头文件 <iostream> 和 <algorithm>
  • 定义了两个整型变量 a 和 b,并分别初始化为 10 和 20。
  • 调用 std::swap(a, b) 交换 a 和 b 的值。
  • 输出交换前后 a 和 b 的值。

综上所述,sort 函数用于对容器内的元素进行排序,而 swap 函数用于交换两个对象的值,它们在 C++ 编程中都非常常用。

http://www.xdnf.cn/news/8605.html

相关文章:

  • 数据结构之稀疏矩阵与三元组表示法
  • 23种设计模式全面解析
  • 告别Feign:基于Spring 6.1 RestClient构建高可靠声明式HTTP客户端
  • 今日多肽之——订书肽
  • Linux文件类型
  • 建筑科技的未来图景:探究中建海龙的创新基因
  • C语言超详细结构体知识
  • 工程化实践:Flutter项目结构与规范
  • 广东中级消防设施操作员理论考试精选题
  • SpringAI+DeepSeek大模型应用开发——5 ChatPDF
  • 相比其他缓存/内存数据库(如 Memcached, Ehcache 等),Redis 在微服务环境中的优势和劣势是什么?
  • 【RK3588 嵌入式图形编程】-SDL2-扫雷游戏-结束和重新开始游戏
  • string函数的应用
  • Python 写生成 应用商店(2025版) 网页 方便收集应用 ,局域网使用
  • 极狐GitLab 外部授权控制机制是怎样的?
  • 【前端知识】今天聊一聊web的事件机制
  • SpringBoot学习(properties、yml(主流)、yaml格式配置文件)(读取yml配置文件的3种方式)(详解)
  • Kafka消费者端重平衡流程
  • 中间件--ClickHouse-9--MPP架构(分布式计算架构)
  • kafka菜鸟教程
  • GEE学习笔记 29:基于GEE的多源Landsat合成与植被指数时序提取
  • axios 模拟实现
  • 【HFP】蓝牙HFP协议音频连接核心技术深度解析
  • 【2】CICD持续集成-k8s集群中安装Jenkins
  • 8.观察者模式:思考与解读
  • 【SAP ME 44】在 HANA DB中报废SFC时的SHOP_ORDER表记录锁定
  • 设计模式从入门到精通之(五)观察者模式
  • LIB-ZC, 一个跨平台(Linux)平台通用C/C++扩展库, stream 流操作
  • conversation_template | conversation_actors | conversation_line_template
  • 网安加·百家讲坛 | 刘志诚:AI安全风险与未来展望