如何检查矢量元素是否连续排序?

sup*_*_tg -5 c++ vector

我需要检查在我的向量中元素是否连续排序?

for(i=1; i<=K; i++)
    if(v[i]=v[i+1]-1)
Run Code Online (Sandbox Code Playgroud)

如果该语句为真,我想返回最大整数.

恩.4 5 6 7

7
Run Code Online (Sandbox Code Playgroud)

Bar*_*rry 11

有一个算法std::is_sorted:

if (std::is_sorted(v.begin(), v.end()) {
    return v.back(); // the largest element would be the last one
}
else {
    // ?? 
}
Run Code Online (Sandbox Code Playgroud)

  • @schizoid这与使用`std :: is_sorted`无关 (2认同)

Chr*_*ckl 5

我需要检查向量中的元素是否按顺序排列

使用C++11的std::is_sorted算法:

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

int main()
{
    std::vector<int> v1 { 4, 5, 7, 6 };
    std::vector<int> v2 { 4, 5, 6, 7 };

    using std::begin;
    using std::end;

    std::cout << std::is_sorted(begin(v1), end(v1)) << "\n";
    std::cout << std::is_sorted(begin(v2), end(v2)) << "\n";
}
Run Code Online (Sandbox Code Playgroud)

如果该陈述为真,我想返回最大的整数。

这是一份工作std::max_element

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

int main()
{
    std::vector<int> v1 { 4, 5, 7, 6 };
    std::vector<int> v2 { 4, 5, 6, 7 };

    using std::begin;
    using std::end;

    std::cout << *std::max_element(begin(v1), end(v1)) << "\n";
    std::cout << *std::max_element(begin(v2), end(v2)) << "\n";
}
Run Code Online (Sandbox Code Playgroud)

请注意,不需要std::max_element对其输入进行排序。

或者,如果无论如何都已排序,则只需使用v1.back().