C++ STL(2)--算法(2)
算法(2)----STL里的排序函数。
1. sort: 对容器或普通数组中指定范围内的元素进行排序,默认进行升序排序。
sort函数是基于快速排序实现的,属于不稳定排序。
只支持3种容器:array、vector、deque。
如果容器中存储的是自定义的对象,则该类必须提供移动构造函数和移动赋值运算符。
代码示例:
class AA
{int* m_pValue;
public:AA(int v) :m_pValue(new int(v)) {}//拷贝构造函数AA(const AA& other) {if (0 != other.m_pValue) {this->m_pValue = new int(*other.m_pValue);}else {this->m_pValue = 0;}}//析构函数~AA() {delete m_pValue;}//移动构造函数AA(AA&& other) noexcept : m_pValue(other.m_pValue) {other.m_pValue = 0;}//移动赋值操作符AA& operator = (AA&& other) noexcept {if (this != &other) {delete m_pValue;m_pValue = other.m_pValue;other.m_pValue = 0;}return *this;}//比较操作符bool operator < (AA& other) {if (0 != this->m_pValue && 0 != other.m_pValue) {return *this->m_pValue < *other.m_pValue;}return false;}void Print() {if (0 != this->m_pValue) {cout << *this->m_pValue << " ";}else {cout << "null" << " ";}}
};int main() {std::vector<AA> v1{ 5,6,9,8,3,2,1,4 };for_each(v1.begin(), v1.end(), mem_fun_ref(&AA::Print));cout << endl;sort(v1.begin(), v1.end());for_each(v1.begin(), v1.end(), mem_fun_ref(&AA::Print));return 0;
}
2. stable_sort: 排序后保证相等元素的相对位置和排序前是一样的。
stable_sort函数是基于归并排序实现的,属于稳定排序。用法和sort一样。
3. partial_sort(first, middle, last)
从指定范围内选出(middle-first)个最小的元素并排序存放在 [first,middle) 区间。
代码示例:
void printInt(int val)
{cout << val << " ";
}
int main() {std::vector<int> v1{ 3,2,5,4,1,6,9,8 };for_each(v1.begin(), v1.end(), printInt);cout << endl;//将v1中最小的 3 个元素移动到开头位置并排好序partial_sort(v1.begin(), v1.begin() + 3, v1.end());for_each(v1.begin(), v1.end(), printInt);return 0;
}
4. partial_sort_copy(first, last, result_first, result_last)
从指定范围内选出(result_last-result_first)个元素排序后拷贝到另一个容器。
代码示例:
void printInt(int val)
{cout << val << " ";
}
int main() {int target[4] = { 0 };std::vector<int> v1{ 3,2,5,4,1,6,9,8 };//将v1中前面5个元素排序,然后拷贝3个元素到targetpartial_sort_copy(v1.begin(), v1.begin() + 5, target, target + 3);for_each(target, target + 4, printInt);return 0;
}
5. nth_element (first, nth, last)
找到[first, last)范围内按照排序规则(默认升序)位于第nth个位置处的元素,并将其放置到此位
置。同时使所有比此元素小的元素在左侧,比它大的元素在右侧。
void printInt(int val)
{cout << val << " ";
}
int main() {std::vector<int> v1{ 8,1,3,4,5,6,0,2,7,9 };//默认升序排序nth_element(v1.begin(), v1.begin() + 2, v1.end());cout << "nth_element排序" << endl;for_each(v1.begin(), v1.end(), printInt);return 0;
}
6. partition (first, last, pred)
根据用户自定义的筛选规则,重新排列指定区域内存储的数据,使其分为 2 组,第一组为符合
筛选条件的数据,另一组为不符合筛选条件的数据。返回第二组的第一个元素。
代码示例:
void printInt(int val)
{cout << val << " ";
}
bool compare(int i) { return (i % 2) == 0; }
int main() {std::vector<int> v1{ 1,2,3,4,5,6,7,8,9 };auto bound = partition(v1.begin(), v1.end(), compare);//按奇偶分组cout << "bound = " << *bound<<endl;for_each(v1.begin(), v1.end(), printInt);return 0;
}
7. stable_partition (first, last, pred)
保证对指定区域内数据完成分组的同时,不改变各组内元素的相对位置。用法和partition一样。
8. is_sorted (first, last, comp)
此函数专门用于判断某个序列是否为有序序列。
代码示例:
bool compare(int i, int j) { return i > j; }
int main() {std::vector<int> v1{ 9, 8, 7, 6, 2 };cout << "v1 is sorted? " << is_sorted(v1.begin(), v1.end(), compare) << endl;return 0;
}相关文章:
C++ STL(2)--算法(2)
算法(2)----STL里的排序函数。 1. sort: 对容器或普通数组中指定范围内的元素进行排序,默认进行升序排序。 sort函数是基于快速排序实现的,属于不稳定排序。 只支持3种容器:array、vector、deque。 如果容器中存储的是自定义的对象ÿ…...
格密码基础:对偶格(超全面)
目录 一. 对偶格的格点 1.1 基本定义 1.2 对偶格的例子 1.3 对偶格的图形理解 二. 对偶格的格基 2.1 基本定义 2.2 对偶格的格基证明 三. 对偶格的行列式 3.1 满秩格 3.2 非满秩格 四. 重复对偶格 五. 对偶格的转移定理(transference theoremÿ…...
ECMAScript简介及特性
ECMAScript是一种由ECMA国际(前身为欧洲计算机制造商协会)制定和发布的脚本语言规范,JavaScript在它基础上进行了自己的封装。ECMAScript和JavaScript的关系是,前者是后者的规格,后者是前者的一种实现。 ECMAScript的…...
csdn中的资源文件如何删除?
csdn中的资源文件如何删除? 然后写文章的时候 点击资源绑定,解锁资源,就可以再次上传。...
NA原理及配置
在IP地址空间中,a;b;c类地址中各有一部分地址,被称为私有IP地址(私网地址),其余的为公有IP地址(公网地址) A:10.0.0.0 - 10.255.255.255 --- 相当于1条A类网段…...
解决:TypeError: ‘tuple’ object does not support item assignment
解决:TypeError: ‘tuple’ object does not support item assignment 文章目录 解决:TypeError: tuple object does not support item assignment背景报错问题报错翻译报错位置代码报错原因解决方法方法一:方法二:今天的分享就到…...
vue3项目中axios的常见用法和封装拦截(详细解释)
1、axios的简单介绍 Axios是一个基于Promise的HTTP客户端库,用于浏览器和Node.js环境中发送HTTP请求。它提供了一种简单、易用且功能丰富的方式来与后端服务器进行通信。能够发送常见的HTTP请求,并获得服务端返回的数据。 此外,Axios还提供…...
基础语法(一)(1)
常量和表达式 在这里,我们可以把Python当成一个计算器,来进行一些算术运算 例如: print(1 2 - 3) print(1 2 * 3) print(1 2 / 3)注意: print是一个python内置的函数,这个稍后我们会进行介绍 可以使用-*/&…...
YOLOv8模型yaml结构图理解(逐层分析)
前言 YOLO-V8(官网地址):https://github.com/ultralytics/ultralytics 一、yolov8配置yaml文件 YOLOv8的配置文件定义了模型的关键参数和结构,包括类别数、模型尺寸、骨架(backbone)和头部(hea…...
【大数据】Zookeeper 集群及其选举机制
Zookeeper 集群及其选举机制 1.安装 Zookeeper 集群2.如何选取 Leader 1.安装 Zookeeper 集群 我们之前说了,Zookeeper 集群是由一个领导者(Leader)和多个追随者(Follower)组成,但这个领导者是怎么选出来的…...
Redis 过期策略
我们在set key的时候可以设置key的过期时间,哪redis是怎么处理过期的key的呢? 有三种过期策略 定时过期:每个设置过期时间的key会创建一个定时器,到过期时间就会立即对key进行清除。该策略可以立即清除过期的数据,对…...
RT_Thread 调试笔记:串口打印、MSH控制台 相关
说明:记录日常使用 RT_Thread 开发时做的笔记。 持续更新中,欢迎收藏。 1.打印相关 1.打印宏定义,可以打印打印所在文件,函数,行数。 #define PRINT_TRACE() printf("-------%s:%s:%d------\r\n", __FIL…...
(适趣AI)Vue笔试题
📑前言 本文主要是【Vue】——(适趣AI)Vue笔试题的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 …...
Matytype的安装问题(word及PPT报错问题)
特别针对:mathtype安装了多次,又卸载了多次的用户。 Word报弹错错误:参考 mathtype安装后,打开word出现没找到dll的错误,这个问题较好解决。 如何解决MathType兼容Office 2016-MathType中文网 PPT(PowerPoi…...
docker拉取镜像提示 remote trust data does not exist for xxxxxx
1、How can I be sure that I am pulling a trusted image from docker 2、docker: you are not authorized to perform this operation: server returned 401. 以上两个问题可以试试以下解决办法 DOCKER_CONTENT_TRUSTfalse 本人是使用jenkins部署自己的项目到docker容器出现…...
ElasticSearch Nested类型全文检索、聚合查询
ElasticSearch Nested类型全文检索、聚合查询 Nested类型全文检索 创建索引 PUT /products1 {"mappings": {"properties": {"fulltext": {"type": "text"},"name": {"type": "text","…...
专业级的渗透测试服务,助力航空业数字化安全启航
某知名航空公司是中国首批民营航空公司之一,运营国内外航线200多条,也是国内民航最高客座率的航空公司之一。在数字化发展中,该航空公司以数据驱动决策,通过精细化管理、数字创新和模式优化等方式,实现了精准营销和个…...
【docker】安装 Redis
查看可用的 redis版本 docker search redis拉取 redis最新镜像 docker pull redis:latest查看本地镜像 docker images创建挂在文件 mkdir -pv /test1/docker_volume/redis/datamkdir -pv /test1/docker_volume/redis/confcd /test1/docker_volume/redis/conf/touch redis.con…...
pinia的独立维护,统一导出及持久化
目录 1.说明及示例 2.注意 1.说明及示例 在src下创建store文件夹,在store文件夹下创建index.js文件,内容如下: import { createPinia } from "pinia"; // pinia的持久化 import piniaPluginPersistedstate from "pinia-pl…...
【AI视野·今日Robot 机器人论文速览 第六十七期】Mon, 1 Jan 2024
AI视野今日CS.Robotics 机器人学论文速览 Mon, 1 Jan 2024 Totally 16 papers 👉上期速览✈更多精彩请移步主页 Daily Robotics Papers MURP: Multi-Agent Ultra-Wideband Relative Pose Estimation with Constrained Communications in 3D Environments Authors A…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...
Go语言多线程问题
打印零与奇偶数(leetcode 1116) 方法1:使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...
windows系统MySQL安装文档
概览:本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容,为学习者提供全面的操作指导。关键要点包括: 解压 :下载完成后解压压缩包,得到MySQL 8.…...
安卓基础(Java 和 Gradle 版本)
1. 设置项目的 JDK 版本 方法1:通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分,设置 Gradle JDK 方法2:通过 Settings File → Settings... (或 CtrlAltS)…...
【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验
Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...
