我有一個關於我在互聯網上找到的代碼,它使用一個deque尋找元素的最大問題 -的Deque實現
#include <iostream>
#include <deque>
using namespace std;
void test(int arr[], int n)
{
std::deque<int> Qi(n);
int i;
for (i = 0; i < n; ++i)
{
while ((!Qi.empty()) && arr[i] >= arr[Qi.back()])
Qi.pop_back(); // Remove from rear
Qi.push_back(i);
}
cout << arr[Qi.front()];
}
// Driver program to test above functions
int main()
{
int arr[] = {12, 1, 78, 90, 57, 89, 56};
int n = sizeof(arr)/sizeof(arr[0]);
test(arr, n);
return 0;
}
我的問題是怎麼Qi.front()時給予正確的索引我還沒有做過任何Qi.push_front()?
但是,下面的代碼給了我一個0
void test(int arr[], int n)
{
std::deque<int> Qi(n);
int i;
for (i = 0; i < n; ++i)
{
Qi.push_back(i);
}
cout << arr[Qi.front()];
}
很抱歉,如果我聽起來愚蠢的。新來雙端...
感謝
這是一個複雜的方式來完成這項任務。你實際上可以用std :: vector來替換std :: deque,它仍然可以以相同的方式工作,並且會更加有效(但仍然是複雜的)。你只需要一個int來找到最大元素或一個索引。 – Slava 2013-03-21 00:00:09