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

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: 对容器或普通数组中指定范围内的元素进行排序&#xff0c;默认进行升序排序。 sort函数是基于快速排序实现的&#xff0c;属于不稳定排序。 只支持3种容器&#xff1a;array、vector、deque。 如果容器中存储的是自定义的对象&#xff…...

格密码基础:对偶格(超全面)

目录 一. 对偶格的格点 1.1 基本定义 1.2 对偶格的例子 1.3 对偶格的图形理解 二. 对偶格的格基 2.1 基本定义 2.2 对偶格的格基证明 三. 对偶格的行列式 3.1 满秩格 3.2 非满秩格 四. 重复对偶格 五. 对偶格的转移定理&#xff08;transference theorem&#xff…...

ECMAScript简介及特性

ECMAScript是一种由ECMA国际&#xff08;前身为欧洲计算机制造商协会&#xff09;制定和发布的脚本语言规范&#xff0c;JavaScript在它基础上进行了自己的封装。ECMAScript和JavaScript的关系是&#xff0c;前者是后者的规格&#xff0c;后者是前者的一种实现。 ECMAScript的…...

csdn中的资源文件如何删除?

csdn中的资源文件如何删除&#xff1f; 然后写文章的时候 点击资源绑定&#xff0c;解锁资源&#xff0c;就可以再次上传。...

NA原理及配置

在IP地址空间中&#xff0c;a&#xff1b;b&#xff1b;c类地址中各有一部分地址&#xff0c;被称为私有IP地址&#xff08;私网地址&#xff09;&#xff0c;其余的为公有IP地址&#xff08;公网地址&#xff09; A&#xff1a;10.0.0.0 - 10.255.255.255 --- 相当于1条A类网段…...

解决:TypeError: ‘tuple’ object does not support item assignment

解决&#xff1a;TypeError: ‘tuple’ object does not support item assignment 文章目录 解决&#xff1a;TypeError: tuple object does not support item assignment背景报错问题报错翻译报错位置代码报错原因解决方法方法一&#xff1a;方法二&#xff1a;今天的分享就到…...

vue3项目中axios的常见用法和封装拦截(详细解释)

1、axios的简单介绍 Axios是一个基于Promise的HTTP客户端库&#xff0c;用于浏览器和Node.js环境中发送HTTP请求。它提供了一种简单、易用且功能丰富的方式来与后端服务器进行通信。能够发送常见的HTTP请求&#xff0c;并获得服务端返回的数据。 此外&#xff0c;Axios还提供…...

基础语法(一)(1)

常量和表达式 在这里&#xff0c;我们可以把Python当成一个计算器&#xff0c;来进行一些算术运算 例如&#xff1a; print(1 2 - 3) print(1 2 * 3) print(1 2 / 3)注意&#xff1a; print是一个python内置的函数&#xff0c;这个稍后我们会进行介绍 可以使用-*/&…...

YOLOv8模型yaml结构图理解(逐层分析)

前言 YOLO-V8&#xff08;官网地址&#xff09;&#xff1a;https://github.com/ultralytics/ultralytics 一、yolov8配置yaml文件 YOLOv8的配置文件定义了模型的关键参数和结构&#xff0c;包括类别数、模型尺寸、骨架&#xff08;backbone&#xff09;和头部&#xff08;hea…...

【大数据】Zookeeper 集群及其选举机制

Zookeeper 集群及其选举机制 1.安装 Zookeeper 集群2.如何选取 Leader 1.安装 Zookeeper 集群 我们之前说了&#xff0c;Zookeeper 集群是由一个领导者&#xff08;Leader&#xff09;和多个追随者&#xff08;Follower&#xff09;组成&#xff0c;但这个领导者是怎么选出来的…...

Redis 过期策略

我们在set key的时候可以设置key的过期时间&#xff0c;哪redis是怎么处理过期的key的呢&#xff1f; 有三种过期策略 定时过期&#xff1a;每个设置过期时间的key会创建一个定时器&#xff0c;到过期时间就会立即对key进行清除。该策略可以立即清除过期的数据&#xff0c;对…...

RT_Thread 调试笔记:串口打印、MSH控制台 相关

说明&#xff1a;记录日常使用 RT_Thread 开发时做的笔记。 持续更新中&#xff0c;欢迎收藏。 1.打印相关 1.打印宏定义&#xff0c;可以打印打印所在文件&#xff0c;函数&#xff0c;行数。 #define PRINT_TRACE() printf("-------%s:%s:%d------\r\n", __FIL…...

(适趣AI)Vue笔试题

&#x1f4d1;前言 本文主要是【Vue】——&#xff08;适趣AI&#xff09;Vue笔试题的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 …...

Matytype的安装问题(word及PPT报错问题)

特别针对&#xff1a;mathtype安装了多次&#xff0c;又卸载了多次的用户。 Word报弹错错误&#xff1a;参考 mathtype安装后&#xff0c;打开word出现没找到dll的错误&#xff0c;这个问题较好解决。 如何解决MathType兼容Office 2016-MathType中文网 PPT&#xff08;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","…...

专业级的渗透测试服务,助力航空业数字化安全启航

​某知名航空公司是中国首批民营航空公司之一&#xff0c;运营国内外航线200多条&#xff0c;也是国内民航最高客座率的航空公司之一。在数字化发展中&#xff0c;该航空公司以数据驱动决策&#xff0c;通过精细化管理、数字创新和模式优化等方式&#xff0c;实现了精准营销和个…...

【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文件夹&#xff0c;在store文件夹下创建index.js文件&#xff0c;内容如下&#xff1a; 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 &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers MURP: Multi-Agent Ultra-Wideband Relative Pose Estimation with Constrained Communications in 3D Environments Authors A…...

FBL刷写

刷写 1、刷写需求的理解2、刷写流程2.1、预编程阶段&#xff1a;保证在编程阶段的动作能够正常操作&#xff0c;控制器给响应。整车功能不会出现问题 刷写某一控制器时&#xff0c;避免其他控制器集DTC,85控制DTC&#xff1b; 28 通信控制.保证总线负载率不要过高&#xff08;下…...

OpenCV-Python(24):模板匹配

原理及介绍 模板匹配是一种常用的图像处理技术&#xff0c;它用于在一幅图像中寻找与给定模板最匹配的区域(在一副大图中搜寻查找模版图像位置的方法)。模板匹配的基本思想是将模板图像在目标图像上滑动&#xff0c;并计算它们的相似度&#xff0c;找到相似度最高的位置即为匹配…...

机器学习--回归算法

&#x1f333;&#x1f333;&#x1f333;小谈&#xff1a;一直想整理机器学习的相关笔记&#xff0c;但是一直在推脱&#xff0c;今天发现知识快忘却了&#xff08;虽然学的也不是那么深&#xff09;&#xff0c;但还是浅浅整理一下吧&#xff0c;便于以后重新学习。 &#x1…...

计算机网络——多址复用技术

1. 频分多址&#xff08;FDMA&#xff09; 1.1 基本原理 频率分配&#xff1a;在FDMA系统中&#xff0c;整个可用的频带被分割成多个较小的频带或通道。每个通道分配给一个用户。 时间利用&#xff1a;用户在分配给他们的频道上持续进行通信&#xff0c;不受时间限制。 1.2 优…...

stm32 HAL库 4096线ABZ编码器

[TOC]目录 ABZ编码器 4096线 买的是这个 AB相代表计数方向&#xff0c;Z代表过零点 cubemx配置 定时器Encoder 也可以选上DMA 中断 Z相GPIO中断 找一个空闲管脚 打开对应中断 代码 不用DMA int main(void) {short Enc_cnt 0;HAL_TIM_Encoder_Start_IT(&ht…...

Java爬虫之Jsoup

1.Jsoup相关概念 Jsoup很多概念和js类似&#xff0c;可参照对比理解 Document &#xff1a;文档对象。每份HTML页面都是一个文档对象&#xff0c;Document 是 jsoup 体系中最顶层的结构。 Element&#xff1a;元素对象。一个 Document 中可以着包含着多个 Element 对象&#…...

如何在 C# 12 中使用主构造函数

C# 12 中最引人注目的新功能之一是对主构造函数的支持。主构造函数的概念并不新鲜。包括 Scala、Kotlin 和 OCaml 在内的多种编程语言都支持直接在声明类的位置集成构造函数参数。 在本文中&#xff0c;我们将仔细研究主构造函数以及如何在 C# 12 中使用它们。若要运行本文中提…...

Zookeeper之Java客户端实战

ZooKeeper应用的开发主要通过Java客户端API去连接和操作ZooKeeper集群。可供选择的Java客户端API有&#xff1a; ZooKeeper官方的Java客户端API。第三方的Java客户端API&#xff0c;比如Curator。 接下来我们将逐一学习一下这两个java客户端是如何操作zookeeper的。 1. ZooKe…...

将文本文件导入Oracle数据库的简便方法:SQL Loader Express

需求 我有一个文本文件dbim.txt&#xff0c;是通过alert log生成的&#xff0c;内容如下&#xff1a; 2020-09-11 2020-09-11 ... 2023-12-03 2023-12-03 2023-12-26我已经在Oracle数据库中建立了目标表&#xff1a; create table dbim(a varchar(16));我想把日志文件导入Or…...

element-ui table-自定义表格某列的表头样式或者功能

自带表格 自定义表格某列的表头样式或者功能 <el-table><el-table-column :prop"date">//自定义表身每行数据<template slot-scope"scope">{{scope.row[scope.column.label] - ? - : scope.row[scope.column.label]}}</template>…...

wordpress报表/微信拓客的最新方法

什么是路由&#xff1f; 根据不同的url展示不同的页面或者数据。 分类&#xff1a;路由分为前端路由和后端路由。 前端路由&#xff1a;主要用于单页面的开发&#xff0c;根据用户请求的地址来渲染不同的页面。前端路由不会经过后端&#xff0c;而是根据hash值的变化进行页面数…...

阿里云ocs wordpress/网页设计与制作考试试题及答案

使用spring难免要用到spring的事务管理&#xff0c;要用事务管理又会很自然的选择声明式的事务管理&#xff0c;在spring的文档中说道&#xff0c;spring声明式事务管理默认对非检查型异常和运行时异常进行事务回滚&#xff0c;而对检查型异常则不进行回滚操作。那么什么是检查…...

在线正能量网站地址链接免费/高清视频网络服务器

今天写代码&#xff0c;碰到个问题&#xff0c;蒙圈了。问题描述&#xff1a;从后台传递数据到前台&#xff0c;后台代码如下&#xff1a;response.Write("IsContract", Count()>0 ? true: false);前台接受到的数据包含如下字段<IsContract>True</IsCon…...

响水专业做网站的公司/网店代运营和推广销售

看了网上好多关于webservice的例子&#xff0c;基本上对初学者来说都是模棱两可云里雾里&#xff0c;现在&#xff0c;我将网上关于webservice的讲解提炼出来&#xff0c;通过一个最简单使用并且方便的例子&#xff0c;告诉大家什么是webservice。 简单来说,webservice就是远程…...

wordpress 模板 国外/网络营销活动案例

最近在学Linux内核编译&#xff0c;在window10&#xff08;版本1809&#xff09;子系统下编译内核成功&#xff0c;想验证一下内核运行。验证过程中&#xff0c;在ubuntu子系统做文件系统挂时“sudo mount -o loop myinitrd4M.img rootfs”报错&#xff1a; mount: rootfs: mo…...

可以做外贸的网站有哪些/学大教育培训机构怎么样

第1章基础准备及入门习题1及解答1数字1.5e2&#xff0c;1.5e3中的哪个与1500相同吗&#xff1f;〖解答〗1.5e32请指出如下5个变量名中&#xff0c;哪些是合法的&#xff1f;abcd-2xyz_33chan a变量ABCDefgh〖解答〗2、5是合法的。3在MATLAB环境中&#xff0c;比1大的最小数是多…...