当前位置: 首页 > 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++ 编程中都非常常用。

相关文章:

  • MODBUS TCP 转 CANOpen
  • C++ 贪吃蛇 Greedy Snake
  • 【React】通过 fetch 发起请求,设置 proxy 处理跨域
  • string函数的应用
  • 基于 BaseRecyclerViewAdapterHelper 4.x 的封装
  • PyTorch快速入门
  • ETL数据集成平台在交通运输行业的五大应用场景
  • 文件包含(详解)
  • 全志H5,NanopiKP1lus移植QT5.12记录
  • 常用的优化算法及横向对比
  • langchain tools源码解析以及扩展
  • 快速使用工具Cursor
  • 【天外之物】线元
  • MacOS怎么显示隐藏文件
  • python-图片分割
  • 慢速率拉伸热变形工艺试验机
  • 通俗理解MCP(Model Context Protocol)和A2A(Agent2Agent)
  • kaamel Privacy agent:AI赋能的隐私保护技术解决方案
  • [特殊字符] 当Docker遇上大模型:本地运行LLM的奇幻漂流 [特殊字符]
  • 68.评论日记
  • 南京信息工程大学商学院讲师李玮玮逝世,终年45岁
  • 新科世界冠军!雨果4比1战胜林诗栋,首夺世界杯男单冠军
  • 画廊主韦尔:是喜是伤的一生
  • 价格周报|本周生猪均价环比上涨,交易均重继续上升
  • 建投读书会·东西汇流|西风东渐中的上海营造
  • 河南一季度GDP为14945.58亿元,同比增长5.9%