字符串的最小字典值

Smallest lexicographical value of a string

本文关键字:字典 字符串      更新时间:2023-10-16

将字符串与运算符<进行比较时;,最小的字符串是什么?

更具体地说,什么是比任何其他字符串都小的字符串(使用<)?

空字符串是所有字符串中"最小的",也就是说,它比任何非空字符串都要小。

§21.4.8.4[string::op<]:

template<class charT, class traits, class Allocator>
bool operator< (const basic_string<charT,traits,Allocator>& lhs,
                const basic_string<charT,traits,Allocator>& rhs) noexcept;

1返回:lhs.compare(rhs) < 0

§21.4.7.9[string::compare]:

int compare(const basic_string& str) const noexcept;

1效果:将字符串的有效长度rlen确定为作为CCD_ 3和CCD_。函数然后通过调用CCD_ 5来比较这两个字符串。

2返回:如果比较是非零的。否则,返回中所示的值表72。

表72——compare()结果

 Condition               Return Value
 size() < str.size()     < 0
 size() == str.size()    0
 size() > str.size()     > 0

对于空字符串e和非空字符串ne之间的任何比较,rlen为零,在这种情况下,指定traits::compare()返回零*。因此,对于每个表72,e.compare(ne)的结果总是小于零,并且e < ne总是真的。


* 如果"对于[0,n)中的每个i,X::eq(p[i],q[i])为真",则字符特征的compare()函数被指定为返回零(§21.2.1[char.ttrates.request],表62);当n == 0时,范围为空,条件为空