在向量中搜索队列大小

时间:2013-02-14 11:37:41

标签: c++ loops vector queue

我有一个范例,其中一个整数在被排队到一个向量中的队列之前,搜索队列循环并将整数排入队列中,队列中的队列最小。以下代码显示了该操作。

#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)

接下来我试图用条件扩展我的范例,整数应该排队到最短的队列,直到它成为队列中的最大大小。

do{
   q[min_index].push(int)
} while(q[min_index].size > queue sizes in the vector loop except this queue )

如何搜索除此队列之外的队列大小的循环 任何想法请帮助!!

1 个答案:

答案 0 :(得分:1)

只需计算最大队列大小以及最小索引:

int min_index = 0;
int max_size = -1;
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
    if(q[i].size() > max_size)
        max_size = q[i].size(); // longest queue
} 
while(q[min_index].size < max_size)
{
    q[min_index].push(int);
}