【发布时间】:2019-04-28 21:21:30
【问题描述】:
我是 C++ 新手,我正在尝试编写一个函数来解决 this 挑战。我的代码如下所示:
#include <iostream>
#include <deque>
#include <algorithm>
using namespace std;
void printKMax(int arr[], int n, int k){
deque<int> subarray;
int i = arr.size();
int maxValues[n];
while(i >= 0) {
while (subarray.size() < n) {
subarray.push_back(arr[i]);
arr.pop();
--i;
}
maxValues.push(max_element(begin(subarray), end(subarray)));
subarray.pop_front();
}
for (array<int>::iterator it=maxValues.begin(); it!=maxValues.end();
it++) {
cout << maxValues[*it] << " ";
}
}
int main(){
int t;
cin >> t;
while(t>0) {
int n,k;
cin >> n >> k;
int i;
int arr[n];
for(i=0;i<n;i++)
cin >> arr[i];
printKMax(arr, n, k);
t--;
}
return 0;
}
这段代码抛出了一个错误,其中包括:
"对‘arr’中的成员‘size’的请求,它是非类类型的 ‘int*’ int i = arr.size();"
有人可以帮我理解这意味着什么吗?我是否试图从类外部引用某些东西,所以我需要使用指针?声明数组的方式有问题吗?
提前致谢!
【问题讨论】:
-
您需要
std::vector或std::array来执行此操作。原始数组没有任何类成员函数。
标签: c++ algorithm data-structures deque