字符串的最小字典值
Smallest lexicographical value of a string
将字符串与运算符<进行比较时;,最小的字符串是什么?
更具体地说,什么是比任何其他字符串都小的字符串(使用<)?
空字符串是所有字符串中"最小的",也就是说,它比任何非空字符串都要小。
§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
时,范围为空,条件为空