C++ STL std::lexicographical_compare用法和实现

一:功能

       按字典顺序比较两个序列,判断第一个序列是否小于(或大于)第二个序列

二:用法

#include <compare>
#include <vector>
#include <string>
#include <algorithm>
#include <iostream>
#include <format>int main() {// for demonstration only, prefer std::arrayint x[] = {1, 2, 3};int y[] = {1, 4};bool cmp1 = std::lexicographical_compare(&x[0], &x[3], &y[0], &y[2]);// cmp1 == true,1>=1, 2>=2, 3>=3std::format_to(std::ostreambuf_iterator(std::cout),"cmp1 == {}\n", cmp1);std::vector<std::string> names1{"Zod", "Celeste"};std::vector<std::string> names2{"Adam", "Maria"};bool cmp2 = std::ranges::lexicographical_compare(names1, names2, [](const std::string& left, const std::string& right) {return left.length() < right.length();});//len("Celeste") > len("Zod") std::format_to(std::ostreambuf_iterator(std::cout),"cmp2 == {}\n", cmp2);// different thanbool cmp3 = names1 < names2; // Zod > Adamstd::format_to(std::ostreambuf_iterator(std::cout),"cmp3 == {}\n", cmp3);
}

三:实现

#include <algorithm>
#include <iostream>
#include <random>
#include <vector>template<class InputIt1, class InputIt2>
bool my_lexicographical_compare(InputIt1 first1, InputIt1 last1,InputIt2 first2, InputIt2 last2)
{for (; (first1 != last1) && (first2 != last2); ++first1, (void) ++first2){if (*first1 < *first2)return true;if (*first2 < *first1)return false;}return (first1 == last1) && (first2 != last2);
}void print(const std::vector<char>& v, auto suffix)
{for (char c : v)std::cout << c << ' ';std::cout << suffix;
}int main()
{std::vector<char> v1{'a', 'b', 'c', 'd'};std::vector<char> v2{'a', 'b', 'c', 'd'};//比较v1, v2,如果v1 < v2 退出循环,每次循环随机 shuffle v1 和v2for (std::mt19937 g{std::random_device{}()};!my_lexicographical_compare(v1.begin(), v1.end(),v2.begin(), v2.end());){print(v1, ">= ");print(v2, '\n');std::shuffle(v1.begin(), v1.end(), g);std::shuffle(v2.begin(), v2.end(), g);}print(v1, "<  ");print(v2, '\n');
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/870854.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux源码安装mysql8.0的小白教程

1.下载8.x版本的mysql MySQL :: Download MySQL Community Server (Archived Versions) 2.安装linux 我安装的是Rocky Linux8.6 3.设置ip地址,方便远程连接 使用nmcli或者nmtui设置或修改ip地址 4.使用远程连接工具MobaXterm操作: (1)将mysql8版本的压缩包上传到mybaxterm…

数据建设实践之大数据平台(三)安装hadoop

安装hadoop 上传安装文件到/opt/software目录并解压 [bigdata@node101 software]$ tar -zxvf hadoop-3.3.5.tar.gz -C /opt/services/ 配置环境变量 [bigdata@node101 ~]$ sudo vim /etc/profile.d/bigdata_env.sh export JAVA_HOME=/opt/services/jdk1.8.0_161 export ZK…

一图看懂 | 蓝卓油气行业解决方案

我国是全球最大的能源消费国&#xff0c;保障国家能源安全是我国能源发展的首要任务&#xff0c;油气作为我国能源体系的重要组成部分&#xff0c;是支撑我国工业和经济社会发展的基础和“压舱石&#xff0c;也是必须筑牢的能源安全底线。 蓝卓根据油气田行业发展趋势&#xf…

前端实现一键复制功能

1、下载插件 npm i vue-clipboard32.0.0 2、在需要复制的文件中引入插件并使用&#xff1a; JS: import useClipboard from "vue-clipboard3"; const { toClipboard } useClipboard(); HTML: <el-tooltip content"复制内容" placement"top&…

算法面试题_字节

问题一&#xff1a;Transfomer矩阵维度分析及MultiHead详解&#xff1a; 细致链接1 细致链接2 问题二&#xff1a;transformer的结构&#xff0c;流程&#xff0c;维度变换&#xff0c;encoder&#xff0c;decoder&#xff1a; 多头维度怎么变化&#xff1a;先在q&#xff0…

自然语言处理基本概念

自然语言处理基本概念 所有学习循环神经网络的人都是看这一篇博客长大的&#xff1a; https://colah.github.io/posts/2015-08-Understanding-LSTMs/ import jieba import torch from torch import nns1 "我吃饭了&#xff01;" s2 "今天天气很好&#xff01…

电脑录屏软件哪个效果最好 怎么一边录屏一边直播 电脑录屏软件好用免费推荐

随着科技的发展&#xff0c;电脑的更新迭代也越来越快&#xff0c;各项功能的进步与完善使得人们的工作和生活越来越离不开电脑&#xff0c;其中录屏功能就很好的体现了网络的便利&#xff0c;人们可以将在电脑画面的变化通过录屏功能记录下来&#xff0c;以便后续学习和回顾。…

基于STM32设计的智能手环(ESP8266+华为云IOT)178

基于STM32设计的智能手环(178) 文章目录 一、前言1.1 项目介绍【1】项目功能介绍【2】项目硬件模块组成【3】ESP8266工作模式配置【4】Android手机APP开发思路【5】项目模块划分1.2 项目功能需求(1)生理参数监测(2)计步功能(3)GPS定位(4)时间显示(5)OLED显示屏展示(…

xlwings 链接到 指定sheet 从别的 excel 复制 sheet 到指定 sheet

重点 可以参考 宏录制 cell sheet.range(G4)cell.api.Hyperlinks.Add(Anchorcell.api, Address"", SubAddress"001-000-02301!A1")def deal_excel(self):with xw.App(visibleTrue) as app:wb app.books.open(self.summary_path, update_linksFalse)sheet…

python-小理与他的画(赛氪OJ)

[题目描述] 小理是个画家&#xff0c;他希望有一天他的画能让心仪的她看到。 只是后来她有了他&#xff0c;他却只有他的画&#xff0c;他望着他的画&#xff0c;默默的发呆。 可惜做题的你&#xff0c;画不出他画的她&#xff0c;所以&#xff0c;我们只好画点简单的画&#x…

Python的入门知识(上)

学习目标&#xff1a; 了解python 入门知识 这里写目录标题 学习目标&#xff1a;学习内容&#xff1a;快速入门 Python 基础特殊规则及特殊字符&#xff1a;Python 文件组织&#xff1a;多元赋值&#xff1a;变量命名规则&#xff1a;__name__ 系统变量&#xff1a;内存管理&a…

centos9+mysql8.0下mycat1.6部署

#创作灵感# 整理一下mysql代理技术&#xff0c;这个当时是和mysql集群部署一个项目的&#xff0c;一并整理出来供参考。 1、环境准备 此处使用的为M-M-SS双主双从结构集群&#xff0c;集群部署方法放在我的上一篇文章中 防火墙可以使用firewall-cmd放行&#xff0c;演示环境…

民航飞机维修工卡、放行单推广使用电子签章,每天可省约3万张纸

据某民航公司对外公布数据显示&#xff0c;通过在飞机航线维修工作中应用电子签章&#xff0c;以日均1000个航班计算&#xff0c;每天可节省约3万张纸、每年可节约1200多万元的费用成本。 小小一枚印章的转变&#xff0c;电子签章是如何做到的&#xff1f; 据了解&#xff0c;…

PowerCreatorCMS UploadResourcePic 任意文件上传漏洞复现

0x01 产品简介 PowerCreator CMS是翰博尔信息技术有限公司(简称翰博尔PowerCreator)推出的一款教育资源管理平台,专注于教育领域的信息化解决方案。PowerCreator CMS是集成了软件平台和硬件设备、多系统高度融合的教育资源管理平台。它旨在通过技术手段提升教育资源的管理、…

09视图操作

文章目录 视图概念/使用原因创建视图在单表上创建视图在多表上创建视图查看视图使用DESCRIBE | DESC语句查看视图基本信息使用SHOW TABLES语句查看视图基本信息使用 show create view/table 语句查看视图创建信息更新视图数据修改视图删除视图视图概念/使用原因 视图是从一个或…

七、golang基础之interface与类型断言

文章目录 一、接口&#xff08;Interface&#xff09;&#xff08;一&#xff09;概述&#xff08;二&#xff09;定义接口&#xff08;三&#xff09;实现接口&#xff08;四&#xff09;接口的使用 二、类型断言&#xff08;Type Assertion&#xff09;&#xff08;一&#x…

jenkins打包java项目报错Error: Unable to access jarfile tlm-admin.jar

jenkins打包boot项目 自动重启脚本失败 查看了一下项目日志报错&#xff1a; Error: Unable to access jarfile tlm-admin.jar我检查了一下这个配置&#xff0c;感觉没有问题&#xff0c;包可以正常打&#xff0c; cd 到项目目录下面&#xff0c;手动执行这个sh脚本也是能正常…

基于java+springboot+vue实现的作业管理系统(文末源码+Lw)110

基于SpringBootVue的实现的作业管理系统&#xff08;源码数据库万字Lun文流程图ER图结构图演示视频软件包&#xff09; 功能描述&#xff1a; 作业管理系统有管理员&#xff0c;教师&#xff0c;学生三个角色。教师和学生都可以进行注册然后再登录。学生可以修改自己的密码&…

总结之企业微信(一)——创建外部群二维码,用户扫码入群

创建外部群 企微接口中没有直接通过服务端API接口创建外部群 可以通过jssdk创建外部群&#xff1a;引用jssdk调用会话接口wx.openEnterpriseChat https://work.weixin.qq.com/api/doc/90000/90136/90511 创建外部群二维码 需要通过企业微信的应用&#xff0c;并且配置客户联…

直播麦克风哪个品牌音质最好,领夹麦克风品牌排行榜前十名推荐

​在这个快节奏的时代&#xff0c;无论是专业播客、商务会议、在线教学还是日常通话&#xff0c;清晰的声音传递已成为沟通的关键。传统的有线麦克风虽好&#xff0c;但在移动性和灵活性上稍显不足。而无线领夹麦克风&#xff0c;以其小巧便携、高保真音质和卓越的抗干扰能力&a…