我们可以在 cpp 中使用 std::max 来查找子数组中的最大元素吗?

Kri*_*dav 0 c++ std

例如,如果我们有一个数组 A ={1, 2 , 3, 4, 5} 并且我想找到 A[i] 和 A[i+k] 之间的最大元素。我可以使用 max 函数吗?我尝试使用它,但不能。请告诉我他们是否还有其他方法可以做到这一点。

我需要这样做

vector <int> max_of_subarrays(int *arr, int n, int k)
    {
        // your code here
        vector<int> v;
        for(int i=0; i<n+1-k; i++){
            int result = arr[i];
            v.push_back(max(result,arr+k)); 
        }
        return v;
Run Code Online (Sandbox Code Playgroud)

izo*_*ica 8

您可以使用std:max_element。它需要两个迭代器并返回一个迭代器到指定范围内的最大元素。您可以使用指向数组元素的指针,这样您就可以执行以下操作:

vector <int> max_of_subarrays(int *arr, int n, int k) {
    vector<int> v;
    for(int i=0; i<n+1-k; i++) {
        v.push_back(*max_element(arr + i , arr + k + i)); 
    }
    return v;
}
Run Code Online (Sandbox Code Playgroud)