php 字符串 字典序序排序,C++ 怎么实现字典序排序法,自然排序

C++ 如何实现字典序排序法,自然排序

类似PHP的natcasesort函数,整了一天没有头绪.

数组是vector

排序前:

[0] => IMG0.png

[1] => IMG3.png

[2] => img1.png

[3] => img10.png

[4] => img12.png

[5] => img2.png

排序后:

[0] => IMG0.png

[1] => img1.png

[2] => img2.png

[3] => IMG3.png

[4] => img10.png

[5] => img12.png

------解决方案--------------------

其实楼主的意思就是按数字大小排序呗? 预处理的时候把数值部分摘出来作为排序的key。

------解决方案--------------------

定位到数字部分,读取数字再比较?

bool compare(const string& name1, const string& name2)

{

int num1, num2;

sscanf(name1.c_str()+3, "%d", &num1);

sscanf(name2.c_str()+3, "%d", &num2);

return num1 

}

------解决方案--------------------

sort(vector.begin(),vector.end(),[](const string&a,const string&b){return a[3]<b[3];});泛型算法和lambda

------解决方案--------------------

直接添加到容器,自动排序

------解决方案--------------------

引用:Quote: 引用:定位到数字部分,读取数字再比较?

bool compare(const string& name1, const string& name2)

{

int num1, num2;

sscanf(name1.c_str()+3, "%d", &num1);

sscanf(name2.c_str()+3, "%d", &num2);

return num1 

}

这样就有点局域性了,不能确定后面一定是数字

那你倒是说说具体的规则啊,对于你举的例子,以上那个比较规则应该是够了

------解决方案--------------------

std::sort(files.begin(),files.end(), [](const std::string& a, const std::string& b)

{

return a.substr(3,std::string::npos)

});

------解决方案--------------------

简单的写了下 用的是qsort

#include 

#include 

#include 

char data[6][10]={{"img0"},

{"img3"},

{"img1"},

{"img10"},

{"img12"},

{"img2"}};

int cmp(const void *a, const void *b)

{

char *temp_a = (char *)a;

char *temp_b = (char *)b;

// 如果两个字符串的长度不相等那么就把少的放前面

if(strlen(temp_a)!= strlen(temp_b))

return strlen(temp_a)-strlen(temp_b);

// 两字符串相等,就升序

for(int i=0; i 

{

if(temp_a[i]!=temp_b[i])

return temp_a[i]-temp_b[i];

}

}

int main()

{

printf("排序前:\n");

for(int i=0; i 

printf("%s\n", data[i]);

qsort(data, 6, 10*sizeof(char), cmp);

printf("排序后:\n");

for(int i=0; i 

printf("%s\n", data[i]);

return 0;

}

------解决方案--------------------

1702411991.png

------解决方案--------------------

1702411992.png

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

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

相关文章

如何优雅地利用C++编程从1乘到20?

点击蓝字关注我们知乎的一个问题&#xff1a;答主&#xff1a;小白白。数学家版本&#xff1a;&#xff08;简单利索&#xff0c;深藏功与名&#xff09;#include <iostream> #include <cmath> int main() {std::cout << std::tgamma(20 1) << std::e…

春天猫rtsy_春天:注入列表,地图,可选对象和getBeansOfType()陷阱

春天猫rtsy如果您使用Spring框架超过一个星期&#xff0c;那么您可能已经知道此功能。 假设您有多个bean实现了给定的接口。 尝试仅自动连接此类接口的一个bean注定会失败&#xff0c;因为Spring不知道您需要哪个特定实例。 您可以通过使用Primary批注来指定一个优先于其他实现…

matlab内维尔差值代码,计算方法上机练习数值积分(包括两次作业).PDF

计算方法上机练习 数值积分(包括两次的作业 )马骢问题&#xff1a; 《计算方法引论》pp.132–133 练习分析&#xff1a;在实际应中基本的数值积分&#xff0c;可 以分为以下种类 &#xff1a;• 牛顿型 &#xff1a;在给定有 限区 间上求等距节 点上 的函数值 。如牛顿-柯茨法则…

用这个C语言骰子代码做选择

点击蓝字关注我们我相信很多人都遇到选择的事情&#xff0c;比较正常的就是&#xff0c;我拿了两个offer要如何选择。用下面这段C代码挺好的&#xff0c;你可以自己加上自己喜欢的判断。#include<stdio.h> #include<stdlib.h> #include<time.h>int main() {i…

java ee的小程序_Java EE应用程序的单片到微服务重构

java ee的小程序您是否曾经想过将现有的Java EE单体应用程序重构为基于微服务的应用程序需要做什么&#xff1f; 该博客说明了一个简单的购物车示例如何转换为基于微服务的应用程序&#xff0c;以及围绕它的一些担忧。 整体和基于微服务的应用程序的完整代码库位于&#xff1a…

matlab工程计算及应用 课程名称,《 MATLAB 工程计算及应用》教学大纲课程名称MATLAB 工程计算及应用.pdf...

《MATLAB 工程计算及应用》教学大纲课程名称 MATLAB 工程计算及应用 课程编号 02T5071课程英文名称 Applications of MATLAB课程性质 选修 学时和学分 32(上机 10)/1 适用专业 工科各专业大纲执笔人 蔡哓君、郭炜 审核人 蔡晓君 先修要求 高等数学、线性代数一、课程基本目的&a…

C语言数据结构:什么是树?什么是二叉树?

点击蓝字关注我们前言在之前的数据结构学习中&#xff0c;我们学习了顺序表、链表、栈、队列这几种结构它们都是用链表或者数组的方式来实现的&#xff0c;主要考察我们对结构体的运用今天让我们来学习一个新的数据结构&#xff0c;也就是下面这副图里面的树啊不好意思&#xf…

git hok json_从战中反弹:将Git提交信息作为JSON返回

git hok json在某些情况下&#xff0c;我们必须知道部署到远程服务器的Web应用程序的确切版本。 例如&#xff0c;客户可能想知道我们是否已经在服务器X上部署了错误修复程序。 当然&#xff0c;我们可以尝试使用“传统”方法找到该问题的答案。 问题是&#xff1a; 没有人不…

oracle plsql异常,【Oracle篇】异常处理和PLSQL

一、所有的PL/SQL异常都具有以下几个基本特征&#xff1a; 错误类型&#xff1a;表示了错误是ORA错误还是PLS错误 错误代号&#xff1a;一串表示错误代号的数字 错误文本&#xff1a;错误消息文本&#xff0c;包括错误代号 二、PL/SQL会产生两种类型的错误 &#xff1a; ORA错误…

如何把CPP源程序改写成C语言?

点击蓝字关注我们曾经参与过公司的bpp项目&#xff0c;就是bluetooth print profile。由于使用了hpijs的开源包&#xff0c;但是是C&#xff0b;&#xff0b;的。由于C&#xff0b;&#xff0b;解释器比C语言解释器占用的存储空间要大500k左右。为了节省有限的存储空间&#xf…

php cdi_使用Fabric8在CDI管理的bean中注入Kubernetes Services

php cdi序幕 我在Kubernetes中最喜欢的是发现服务的方式。 为什么&#xff1f; 主要是因为用户代码不必处理注册&#xff0c;查找服务&#xff0c;也没有网络意外&#xff08;如果您曾经尝试过基于注册表的方法&#xff0c;那么您就会知道我在说什么&#xff09; 。 这篇文章…

oracle日志恢复启用命令,oracle 日志恢复数据详解

1&#xff1a;首先查找redo&#xff0c;如果redo有可供恢复的信息&#xff0c;就那redo中的信息进行恢复&#xff0c;此时一般在恢复时&#xff0c;类似如下:SQL> recover database;Media recovery complete.2&#xff1a;如果在redo中没有找到可供恢复的信息&#xff0c;or…

9 个很酷的 CMD 命令

点击蓝字关注我们ipconfig功能&#xff1a;查询本机IP地址操作方法&#xff1a;只要在在打开的cmd命令界面中输入“ipconfig”就可以了。msg功能&#xff1a;向对方电脑发送一条文本提示操作方法&#xff1a;首先你要知道对方的IP地址&#xff0c;接下来输入命令“msg /server:…

使用java进行婚礼庆祝_#102030:在30天内运行20 10K,庆祝Java 20年

使用java进行婚礼庆祝1995年5月23日是技术史上的重要时刻。 业界似乎并未意识到当天发布的语言会在未来几年内完全改变技术的格局。 Java将在今年的同一天庆祝20岁生日。 Java 20年&#xff0c;哇&#xff01; 回顾20年前的存储器时代&#xff0c;思考一下Java的发明时间/方式…

oracle 插入出错_使用sqlca打印错误原因,ORACLE-Proc:SQLCA

SQL 通信区是用下列语句描述的&#xff1a;EXEC SQL INCLUDE SQLCA&#xff1b;此部分提供了用户运行程序的成败记录和错误处理。SQLCA的组成SQLCA是一个结构类型的变量&#xff0c;它是ORACLE 和应用程序的一个接口。在执行 Pro*C程序时&#xff0c; ORACLE 把每一个嵌入SQL语…

这几行 C++ 代码,真的骚!

点击蓝字关注我们事情是这么一回事&#xff1a;国外有个大佬在StackExchange上发起了一个叫做 Tweetable Mathematical Art 的比赛。参赛者需要用C编写代表三原色的RD、GR、BL三个函数&#xff0c;每个函数都不能超过 140 个字符。每个函数都会接到 i 和 j 两个整型参数&#x…

sts集成jboss_JBoss BPM Travel Agency演示与现代BPM数据集成

sts集成jboss不久前&#xff0c;我们启动了一个规模较大的JBoss Travel Agency演示项目&#xff0c;以展示JBoss BPM Suite的一些更有趣的功能。 我们提供了一系列视频 &#xff0c;不仅向您展示了如何安装它&#xff0c;项目中各种规则和流程工件的含义&#xff0c;还向您介绍…

详解C语言的C#数组

点击蓝字关注我们数组是一种存储相同类型元素的固定大小顺序集合。数组用于存储数据集合&#xff0c;但一般会将数组视为存储在连续存储器位置的相同类型的变量的集合。如果要存储表示100名称学生的分数&#xff0c;需要独立地声明100整数变量。例如&#xff1a;number0.number…

jdk注解_我们正在下注:这个注解很快就会出现在JDK中

jdk注解Yahor最近提出的Stack Overflow问题引起了我的兴趣&#xff1a; 如何在Java 8编译时确保方法签名“实现”功能接口 。 这是一个很好的问题。 让我们假设以下名义类型&#xff1a; FunctionalInterface interface LongHasher {int hash(long x); }该类型强加了清晰的合同…

oracle的连接函数,Oracle各种连接函数总结

1.前言Oracle可用连接函数会介绍以下几个Oracle列转行函数 Listagg()strcat()wmsys.wm_concat()2.Oracle列转行函数 Listagg()2.1最基础的用法&#xff1a;LISTAGG(XXX,XXX) WITHIN GROUP( ORDER BY XXX)用法就像聚合函数一样&#xff0c;通过Group by语句&#xff0c;把每个Gr…