在 C++ 标准库中,std::is_sorted
函数用于检查一个范围内的元素是否已经按升序排列。当传递一个空数组(即起始迭代器等于终止迭代器)给 std::is_sorted
时,函数的行为是有明确定义的。
根据 C++ 标准(ISO/IEC 14882:2017),std::is_sorted
的行为如下:
- 如果起始迭代器等于终止迭代器,则返回
true
。 - 否则,检查范围内的元素是否按升序排列,并返回相应的布尔值。
这意味着对于空数组,std::is_sorted
将返回 true
,因为空数组可以被认为是已排序的。这与数学上的“空集是其自身的子集”的概念类似。
示例代码:
#include#include #include int main() { std::vector empty_vec; if (std::is_sorted(empty_vec.begin(), empty_vec.end())) { std::cout << "The empty vector is sorted."<< std::endl; } else { std::cout << "The empty vector is not sorted."<< std::endl; } return 0; }
输出:
The empty vector is sorted.