C ++用deque找到最大的数字?

时间:2014-09-15 13:30:24

标签: c++ codeblocks

所以我有一些指针的麻烦,我试图谷歌越多 - 我越混乱,因为大多数解释太简单或太复杂,我可以将它应用到我手头的任务。

我想要做的是拥有一个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;
}

任何帮助都会受到关注!

3 个答案:

答案 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;
}