首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有C++11标准排序算法吗?

有C++11标准排序算法吗?
EN

Stack Overflow用户
提问于 2015-05-28 23:10:57
回答 1查看 115关注 0票数 0

在当时(有些人可能会经常争辩),人们需要按照人类对事物排序的方式(字母顺序,而不是ASCIIbetically)进行排序,但据我所知,在C++中没有方便的方法(我甚至不知道boost解决方案),人们不得不自己动手。这在C++11或以后的版本中被纠正了吗?

是否有c++标准(从c++11开始)中包含的谓词或算法允许像人类一样进行排序?

也就是说,对string的排序为"z1,z2,z3“,而不是"z1,z10,z100,z2,z20,z3”等。

如果不是,是否有什么逻辑上的原因让我忽略了它们不包括这个功能呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-28 23:40:01

的答案是:不,没有这样的事情。有一种比较字符串operator<的标准方法。std::less也默认为.它是基于lexicographical compare的。而且,按照“正常”的方式,我会理解std::sort (1),所以这就是它。

有点挑剔:,我不认为你的概念是字母排序,它不能在字符级别上进行比较。“字母”而不是"ASCIIbetical“更像是字母的不同顺序。

您的概念更像是字母数字,它需要解释字符串,并将数字作为一个原子单位进行比较。这需要一些解析逻辑。

一种观点:,我相信没有一件事是每个人都会用同样的方式做的。这可能有点极端,但即使对于常识的例子,也会有歧义。让我们以大多数gnu中包含的示例和标准sort程序为例。它有一个用于human的开关human,它执行您所描述的操作,但是它也检查数字的后缀,因此2K2G小。现在还不清楚该选择哪种选择。在此之后,会有一个问题,小数如何?诸若此类。

要正确地做到这一点,它将需要相当复杂的架构和逻辑,和/或作出非显而易见的设计选择。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30518545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档