【发布时间】:2017-12-13 08:51:10
【问题描述】:
正如你在标题中看到的,STL std::sort() 什么时候停止比较?
我的意思是我有一个这样的向量:
city name :: Marseille
city name :: Mont Saint Martin
city name :: Mont de Marsan
并且排序不会改变这个顺序,对我来说应该是:
city name :: Marseille
city name :: Mont de Marsan
city name :: Mont Saint Martin
我已经尝试过这些语法:
std::sort(vector.begin(), vector.end());
std::sort(vector.begin(), vector.end(), std::less<std::string>());
如果 std::sort() 在第一个空格处停止,请问这是一种解决方法吗?如何解决?
【问题讨论】:
-
大写字母是“小于”小写字母
-
这不是什么时候停止比较的问题,就像默认比较功能所做的那样 - 如果您想以不同的方式排序,您可以随时提供自己的。
-
好的,我想我明白了,谢谢各位
-
@harold - 当字符以 ASCII 编码时确实如此,如今大多数系统都使用这种编码。但是还有其他的字符编码,一般不要求大写在小写之前。
-
@harold:我认为这有点不公平。它显然标准化了很多。更准确(和相关)的说法是,如果它禁止 EBCDIC,它就不是 C++ 标准。