【发布时间】:2013-02-15 12:21:52
【问题描述】:
更新
有一个逻辑,即之前的整数被排入向量中的队列,搜索队列循环并将整数排入队列中具有最小大小的队列。下面的代码展示了操作
#include <vector>
#include <queue>
std::vector<std::queue<int> > q
int min_index = 0;
std::size_t size = q.size();
for( i=0; i<size; i++){ //accessing loop of queues
if(q[min_index].size() > q[i].size())
min_index = i; // Now q[min_index] is the shortest queue
}
q[min_index].push(int)
我正在尝试扩展这个逻辑,条件是整数应该继续在最短队列中排队当条件为真时最短队列的大小小于或等于任何另一个队列的大小队列循环中的大小。
我想做如下所示的代码
#include <vector>
#include <queue>
std::vector<std::queue<int> > q
int min_index = 0;
std::size_t size = q.size();
for( i=0; i<size; i++){ //accessing loop of queues
if(q[min_index].size() > q[i].size())
min_index = i
while(q[min_index].size <= q[some_other_index].size() )
{
q[min_index].push(int);
}
如何实现这个逻辑?
【问题讨论】:
-
在
while循环中再次检查最短队列? -
@joachim pileborgInside while 循环最短队列大小将与向量中存在的所有其他队列大小进行比较。如果最短队列大小小于或等于队列循环中的任何其他队列大小,它将推送整数。否则它将退出循环
-
@billa 根据定义,最短队列大小将小于或等于任何其他队列大小。否则,它不是最短的。
-
@JamesKanze 没错,我想说“虽然最短队列大小小于或等于队列循环中的任何其他队列大小,但它将推送整数”
-
@billa 你应该更新问题。现在它说“直到”,但你只是说“当”。另外:你能对队列的向量进行排序吗?当你填满最短的队列时会发生什么 - 它完成了还是你选择另一个队列并重新开始?这是否发生在函数内部,如果是,您如何调用该函数?推动的元素来自哪里?等等...您可以分享很多信息来帮助人们回答问题。