gpt4 book ai didi

c++是否有STL算法来检查范围是否严格排序?

转载 作者:太空狗 更新时间:2023-10-29 20:02:16 25 4
gpt4 key购买 nike

我所说的“严格”是指“没有等效元素”。

is_sorted(v.begin(), v.end(), std::less<>()) 

不符合我的目标,因为它对 1,2,2,4,5 这样的范围返回 true。

is_sorted(v.begin(), v.end(), std::less_equal<>()) 

将根据给定的实现工作 here ,但不幸的是,is_sorted 要求 Compare 谓词严格排序(Compare(a,a) 必须为 false),并且 std: :less_equal 当然不是。

那么我应该为此目的编写自己的循环吗?

最佳答案

引用评论流:

std::adjacent_find with std::greater_equal should do the trick - it will find the first element that is greater or equal than the next one; if no such element exists, the sequence is strictly increasing.

#include <algorithm>
#include <iostream>
#include <vector>

int main()
{
std::vector<int> v1{0, 1, 2, 3, 40, 41};

auto i2 = std::adjacent_find(v1.begin(), v1.end(), std::greater_equal<int>());
if (i2 == v1.end()) {
std::cout << "The entire vector is sorted in strictly ascending order\n";
} else {
std::cout << "The vector is not sorted\n";
}
}

示例源自 http://en.cppreference.com/w/cpp/algorithm/adjacent_find

关于c++是否有STL算法来检查范围是否严格排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43219003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com