所以我有一些指针的麻烦,我试图谷歌越多 - 我越混乱,因为大多数解释太简单或太复杂,我可以将它应用到我手头的任务。
我想要做的是拥有一个20个随机数(int)的双端队列,然后让一个函数找到其中最大的一个,但我似乎无法弄清楚我做错了什么。
以下是代码:
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <deque>
using namespace std;
int *findBiggest(int *nQ, int platser)
{
deque<int> *p;
int* test;
int big=0;
for(int i=0; i<platser; i++)
{
test = nQ.front();
cout << "Place[" << i << "]: \t" << test << endl;
nQ.pop_front();
if(test > big)
big = test;
}
cout << "\nThe biggest number is: " << big << endl;
return 0;
}
int main()
{
srand (time(NULL));
deque <int> nQ;
for(int i=0; i<20; i++)
{
nQ.push_back(rand() % 10000);
}
findBiggest(nQ, 20);
system("pause");
return 0;
}
任何帮助都会受到关注!
答案 0 :(得分:1)
这是你要找的东西吗?
template<typename forwardItr_>
auto get_max_value(forwardItr_ beg, forwardItr_ end) -> decltype(*beg)
{
auto biggest = *beg;
while(beg != end) {
if(biggest < *beg)
biggest = *beg;
++beg;
}
return biggest;
}
答案 1 :(得分:1)
您的声明中有错误:
int *findBiggest(int *nQ, int platser)
应该是:
int *findBiggest(deque<int>& nQ, int platser)
答案 2 :(得分:0)
这是工作代码。
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <deque>
using namespace std;
int *findBiggest(deque<int>& nQ, int places)
{
int test;
int big=0;
for(int i=0; i<places; i++)
{
test = nQ.front();
cout << "Place[" << i << "]: \t" << test << endl;
nQ.pop_front();
if(test > big)
big = test;
}
cout << "\nThe biggest number is: " << big << endl;
return 0;
}
int main()
{
srand (time(NULL));
deque <int> nQ;
for(int i=0; i<20; i++)
{
nQ.push_back(rand() % 10000);
}
findBiggest(nQ, 20);
system("pause");
return 0;
}