无法删除我自己的问题,所以改为覆盖它...
它实际上并不是实现中的一个错误,尽管它可以说是标准中的一个错误:
23.2.1 一般容器要求[container.requirements.general] 13 表 98 列出了为某些类型的容器提供的操作,但没有列出为其他类型的容器提供的操作。除非另有说明,为其提供所列操作的那些容器应实现表 98 中描述的语义。
该表包含:
a < b
可转换为bool
lexicographical_compare(a.begin(),a.end(),b.begin(),b.end())
pre: < 是为 T 的值定义的。 < 是全序关系。
线性
虽然后面的部分指定std::set提供比较运算符,但不幸的是它并没有改变上面给出的定义。
顺便说一句,std::lexicographical_compare不是实际使用std::less,而是<直接使用。但这并不重要。