【问题标题】:search the queue sizes in a vector在向量中搜索队列大小
【发布时间】:2013-02-14 11:37:41
【问题描述】:

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

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

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

【问题讨论】:

    标签: c++ loops vector queue


    【解决方案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);
    }
    

    【讨论】:

    • @eladidanSo 这里 q[min_index] 队列将推送整数,直到它成为队列中的最大值,对吗?
    • 完全正确,但有一个区别。它将是最大队列,而不是最大队列。意思是,它的大小会增长,直到它与最大队列一样大,但随后它将停止推送。如果您希望它成为唯一最大大小的队列,则需要再向队列推送一个 int(将 while 的条件更改为
    • @eladidanSo for while
    • 对不起,eladidan,我不能投票,因为我的声誉低于 15,当我得到 15rep 时肯定会投票
    • @billa:是的,没错。关于你是对的赞成票,我应该记得:)
    猜你喜欢
    • 2015-03-05
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    • 1970-01-01
    • 2016-04-06
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多