关于C++中的队列

about queue in C++

本文关键字:队列 C++ 关于      更新时间:2023-10-16

我使用推送队列将此元素添加到我的队列中,但它不起作用!

#include <iostream>
#include <queue>
using namespace std;
int main() {
    int n,k,tamp;
    cin >> n>> k;
    priority_queue<int,vector<int>,greater<int> > q;
    for(int i=1; i<n; i++)
    {
        cin >> tamp;
        q.push(tamp);
    }
    while(q.top() < k && q.size() > 1)
    {
        tamp = q.top() * 1;
        cout << q.top() << endl;
        q.pop();
        tamp += q.top() * 2;
        cout << q.top() << endl;
        q.pop();
        cout << tamp << endl;
        q.push(tamp);
        while(!q.empty())
        {
            cout << "p=" << q.top() << endl;
            q.pop();
        }
    }
    return 0;
}

这是我的测试:

  1. 8 90
  2. 13 47 74 12 89 74 18 38

它将更改为 12 13 18 38 47 74 74 89。并tamp=12+13*2=38并将其推送到队列中,但队列只有 18 38 47 74 74 89!!帮助我,谢谢你收看这个!!

你有一个外循环可以

while(q.top() < k && q.size() > 1)

因此,很明显,您希望根据 q 的内容循环几次。但是,您确实:

while(!q.empty())
{
    cout << "p=" << q.top() << endl;
    q.pop();
}

这将清空队列。所以,它不会循环。

请说明您要做什么。