“严格”指的是“没有等效元素”。
is_sorted(v.begin(), v.end(), std::less<>())
无法满足我的目标,因为它会对类似于1,2,2,4,5
的范围返回true。
由于返回真实值,例如1、2、2、4、5
等范围,无法达到我的目标。
is_sorted(v.begin(), v.end(), std::less_equal<>())
根据这里给出的实现,应该能够正常工作。但不幸的是,is_sorted
要求Compare
谓词是严格顺序关系(Compare(a,a)
必须为false),而std::less_equal
显然不是。因此,我需要为此编写自己的循环吗?
std::greater_equal
的std::adjacent_find
应该可以解决问题——它将找到第一个元素,该元素大于或等于下一个元素。如果存在这样的元素,则该序列不是严格递减的。很棒的建议@Rob,我之前不知道这个函数。 - Matteo Italia