关于C++中的队列
about queue in C++
我使用推送队列将此元素添加到我的队列中,但它不起作用!
#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;
}
这是我的测试:
- 8 90
- 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();
}
这将清空队列。所以,它不会循环。
请说明您要做什么。
相关文章:
- boost::进程间消息队列引发错误
- 如果我只是不访问queue_front节点的子节点,而是将它们推到队列中呢?还是BFS吗
- Android NDK传感器向事件队列报告奇怪的间隔
- C++优先级队列,按对象的唯一指针的特定方法升序排列
- 按对象的特定方法按升序排列的C++优先级队列
- 使用2个键的cpp-stl::优先级队列排序不正确
- 我是否需要在下一次转移时将所有权*转移回转移队列
- 在一个读写器队列中,我可以用volatile替换原子吗
- 为什么我的多线程作业队列崩溃
- 尝试将lambda函数放在队列中时出现一般分配器错误(可能是与unique_ptr有关的错误)
- 使用"Task"函数指针队列定义作业管理器
- 在c++队列中使用pop和visit实现线程安全
- 为什么我需要C++中不同的排序格式来对这个USACO代码上的数组和优先级队列进行排序
- 打印优先级队列
- 共享队列的线程安全
- 带自定义比较器的最小优先级队列
- 在 Vulkan Qt 中获取队列系列
- 堆栈和队列是否像C++中的数组一样传递?
- 在C++中创建队列 - 什么是 malloc 错误?
- 优先级队列自定义比较器