【发布时间】:2013-01-17 15:36:55
【问题描述】:
我有一个范例,每个线程有一个队列。我希望在队列数量中找到最小大小的队列,我使用以下代码完成了。
std::vector<std::queue<task> > q;
int min_value = INT_MAX;
std::size_t size = q.size();
for( i=1; i<size; i++){ //accessing loop of queues
if(min_value > q[i].size())
min_value = q[i].size();
}
现在我希望在这方面做一个额外的操作,每次只有最小大小的队列(从上面的代码中找到)应该使任务入队。
q.get (min_value)
q.push(task) // will this one, does the required operation?
【问题讨论】:
-
std::vector没有get成员。 -
您的
for循环忽略了q的第一个元素,它位于索引0。如果您希望访问所有队列,您应该将i初始化为0,而不是1。或者,考虑使用基于范围的 for 循环:for (auto& each_queue : q),然后访问each_queue而不是q[i]。